フォアグラウンド スレッドとバックグラウンド スレッド
更新 : 2007 年 11 月
マネージ スレッドは、バックグラウンド スレッドかフォアグラウンド スレッドのどちらかです。バックグラウンド スレッドは、マネージ実行環境を実行されたままにしない点を除き、フォアグラウンド スレッドと同じです。すべてのフォアグラウンド スレッドがマネージ プロセス (.exe ファイルがマネージ アセンブリであるプロセス) で停止されると、システムはすべてのバックグラウンド スレッドを停止し、シャットダウンします。
メモ : |
---|
プロセスの終了によってランタイムがバックグラウンド スレッドを停止する場合、スレッドで例外はスローされません。ただし、AppDomain.Unload メソッドがアプリケーション ドメインをアンロードしたためにスレッドが停止する場合、フォアグラウンドとバックグラウンドの両方のスレッドで ThreadAbortException がスローされます。 |
スレッドがバックグラウンド スレッドかフォアグランド スレッドかを特定したり、その状態を変更したりするには、Thread.IsBackground プロパティを使用します。IsBackground プロパティを true に設定すると、スレッドをいつでもバックグラウンド スレッドに変更できます。
重要 : |
---|
スレッドの状態 (フォアグランドまたはバックグラウンド) は、スレッドで処理されない例外の結果には影響しません。.NET Framework Version 2.0 では、フォアグランド スレッドまたはバックグラウンド スレッドで処理されない例外が発生すると、アプリケーションが終了します。マネージ スレッドの例外 を参照してください。 |
マネージ スレッド プールに属しているスレッド (つまり、IsThreadPoolThread プロパティが true のスレッド) はバックグラウンド スレッドです。アンマネージ コードからマネージ実行環境に入るすべてのスレッドは、バックグラウンド スレッドとしてマークされます。新しい Thread オブジェクトを作成および起動して生成されたすべてのスレッドは、既定でフォアグラウンド スレッドです。
ソケット接続などの動作を監視するためにスレッドを使用する場合、スレッドによってプロセスが終了しないように、IsBackground プロパティを true に設定します。