フォアグラウンド スレッドとバックグラウンド スレッド

マネージ スレッドは、バックグラウンド スレッドかフォアグラウンド スレッドのどちらかです。バックグラウンド スレッドは、マネージ実行環境を実行されたままにしない点を除き、フォアグラウンド スレッドと同じです。すべてのフォアグラウンド スレッドがマネージ プロセス (.exe ファイルがマネージ アセンブリであるプロセス) で停止されると、システムはすべてのバックグラウンド スレッドを停止し、シャットダウンします。

Noteメモ :

プロセスの終了によってランタイムがバックグラウンド スレッドを停止する場合、スレッドで例外はスローされません。ただし、System.AppDomain.Unload(System.AppDomain) メソッドがアプリケーション ドメインをアンロードしたためにスレッドが停止する場合、フォアグラウンドとバックグラウンドの両方のスレッドで ThreadAbortException がスローされます。

スレッドがバックグラウンド スレッドかフォアグランド スレッドかを特定するか、またはその状態を変更する場合は、Thread.IsBackground プロパティを使用します。IsBackground プロパティを true に設定すると、スレッドをいつでもバックグラウンド スレッドに変更できます。

重要

スレッドの状態 (フォアグランドまたはバックグラウンド) は、スレッドで処理されない例外の結果には影響しません。.NET Framework Version 2.0 では、フォアグランド スレッドまたはバックグラウンド スレッドで処理されない例外が発生すると、アプリケーションが終了します。マネージ スレッドの例外 を参照してください。

マネージ スレッド プールに属しているスレッド (つまり、IsThreadPoolThread プロパティが true のスレッド) はバックグラウンド スレッドです。アンマネージ コードからマネージ実行環境に入るすべてのスレッドは、バックグラウンド スレッドとしてマークされます。新しい Thread オブジェクトを作成および起動して生成されたすべてのスレッドは、既定でフォアグラウンド スレッドです。

ソケット接続などの動作を監視するためにスレッドを使用する場合、スレッドによってプロセスが終了しないように、IsBackground プロパティを true に設定します。

参照

関連項目

Thread.IsBackground
Thread
ThreadAbortException