次の方法で共有


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

マネージド スレッドは、バックグラウンド スレッドまたはフォアグラウンド スレッドです。 バックグラウンド スレッドはフォアグラウンド スレッドと同じですが、1 つの例外があります。バックグラウンド スレッドでは、マネージド実行環境は実行されません。 すべてのフォアグラウンド スレッドがマネージド プロセス (.exe ファイルがマネージド アセンブリである) で停止されると、システムはすべてのバックグラウンド スレッドを停止し、シャットダウンします。

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

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

Von Bedeutung

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

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

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

こちらも参照ください