フォアグラウンドとバックグラウンド スレッド
普段何気につかってるスレッドは実は2種類あるってことを大分前に知りました。そのメモです。
.NET Framework 2.0のスレッドはフォアグラウンドとバックグラウンドの2種類あります。 Threadクラスを用いて作成したスレッドはデフォルトとしてフォアグラウンドスレッド となります。このスレッドが動作している間はApplication.Exit()などで抜けたとしても プロセスは終了しません。一方、バックグラウンドスレッドはすべてのフォアグラウンドスレッドが終了すると 強制的に終了します。 ちらっと書きましたが、フォアグラウンドでスレッドを動かしている最中だと 画面を閉じてもプロセスは終了しません。よく分かんないで使っていると 画面を閉じたのにプロセスがしばらく終了しない、なぜ!?となるのでご注意を^^; 下のサンプルコードはボタンを押して画面を閉じアプリを終了させます。が閉じる前に フォアグラウンドでスレッドを実行しているので、10秒間経たないとアプリが終了しません。 サンプル
バックグラウンドの設定方法はThread.IsBackgroundプロパティをtrueにします。
falseのときはフォアグラウンドスレッドです。
最初のほうにデフォルトはフォアグラウンドスレッドといいましたが、アンマネージコード からマネージ実行環境に入るスレッドはすべてバックグラウンドスレッドとなります。 |