最終更新:2018-04-27 (金) 15:19:11 (2183d)
.NET Framework/スレッド
Top / .NET Framework / スレッド
マルチスレッドの方法
Thread
普通の書き方
System.Threading.Thread t1 = new System.Threading.Thread( ThreadStart(処理する関数名));
匿名メソッド (C♯ 2.0)
- ThreadStartデリゲートへの暗黙の変換
System.Threading.Thread t1 = new System.Threading.Thread( delegate() { System.Console.Write("Hello, "); System.Console.WriteLine("World!"); });
ラムダ式 (C♯ 3.0)
System.Threading.Thread t1 = new System.Threading.Thread( () => { System.Console.Write("Hello, "); System.Console.WriteLine("World!"); }); });
ThreadPool
- System.Threading.ThreadPool
- スレッドをいくつか事前に立ち上げといて、使いまわすことで、スレッド作成の時間を短縮させる
非同期デリゲート
System.Threading.Tasks.Task
メモ
- スレッドを1つ生成すると、約1Mbytesのメモリを消費するし(=空間的なコスト)、スレッドの生成/破棄のたびにプロセス内にロードされている全ての.dllファイルのDllMain関数が呼び出される
対策
種類
フォアグラウンドスレッド
- メインスレッド
- Threadクラスを用いて作成したスレッド
- このスレッドが動作している間はApplication.Exit()などで抜けたとしてもプロセスは終了しない
バックグラウンドスレッド
- ThreadPool
- すべてのフォアグラウンドスレッドが終了すると 強制的に終了