フォアグラウンド スレッドとバックグラウンド スレッドForeground and Background Threads

マネージド スレッドは、バックグラウンド スレッドまたはフォアグラウンド スレッドのいずれかです。A managed thread is either a background thread or a foreground thread. バックグラウンド スレッドは、1 つの例外を除き、フォアグラウンド スレッドと同じです。その例外とは、バックグラウンド スレッドではマネージド実行環境を実行させておくことができないことです。Background threads are identical to foreground threads with one exception: a background thread does not keep the managed execution environment running. すべてのフォアグラウンド スレッドが (.exe ファイルがマネージド アセンブリである) マネージド プロセスで停止されると、システムはすべてのバックグラウンド スレッドを停止し、シャットダウンします。Once all foreground threads have been stopped in a managed process (where the .exe file is a managed assembly), the system stops all background threads and shuts down.

注意

プロセスがシャットダウンしているため、ランタイムがバックグラウンド スレッドを停止した場合、スレッドでは例外がスローされません。When the runtime stops a background thread because the process is shutting down, no exception is thrown in the thread. ただし、AppDomain.Unload メソッドがアプリケーション ドメインをアンロードしたために、スレッドが停止された場合、フォアグラウンド スレッドとバックグラウンド スレッドの両方で ThreadAbortException がスローされます。However, when threads are stopped because the AppDomain.Unload method unloads the application domain, a ThreadAbortException is thrown in both foreground and background threads.

スレッドがバックグラウンド スレッドであるか、フォアグラウンド スレッドであるかを判断する場合や、その状態を変更する場合は、Thread.IsBackground プロパティを使用します。Use the Thread.IsBackground property to determine whether a thread is a background or a foreground thread, or to change its status. スレッドは、IsBackground プロパティを true に設定することで、いつでもバックグラウンド スレッドに変更できます。A thread can be changed to a background thread at any time by setting its IsBackground property to true.

重要

スレッドのフォアグラウンドまたはバックグラウンドの状態が、スレッドのハンドルされない例外の結果に影響することはありません。The foreground or background status of a thread does not affect the outcome of an unhandled exception in the thread. .NET framework Version 2.0 では、フォアグラウンドまたはバックグラウンド スレッドのハンドルされない例外により、アプリケーションが終了します。In the .NET Framework version 2.0, an unhandled exception in either foreground or background threads results in termination of the application. マネージド スレッドの例外」を参照してください。See Exceptions in Managed Threads.

マネージド スレッド プールに属するスレッド (つまり、IsThreadPoolThread プロパティが true のスレッド) はバックグラウンド スレッドです。Threads that belong to the managed thread pool (that is, threads whose IsThreadPoolThread property is true) are background threads. アンマネージド コードからマネージド実行環境に入るすべてのスレッドは、バックグラウンド スレッドとしてマークされます。All threads that enter the managed execution environment from unmanaged code are marked as background threads. 新しい Thread オブジェクトを作成して開始することで生成されるすべてのスレッドは、既定でフォアグラウンド スレッドとなります。All threads generated by creating and starting a new Thread object are by default foreground threads.

スレッドを使用して、ソケット接続などのアクティビティを監視する場合は、その IsBackground プロパティを true に設定して、スレッドがプロセスの終了を回避しないようにします。If you use a thread to monitor an activity, such as a socket connection, set its IsBackground property to true so that the thread does not prevent your process from terminating.

関連項目See also