英語で読む

次の方法で共有


Thread.IsBackground プロパティ

定義

スレッドがバックグラウンド スレッドであるかどうかを示す値を取得または設定します。

C#
public bool IsBackground { get; set; }

プロパティ値

このスレッドがバックグラウンド スレッドである場合またはバックグラウンド スレッドになる場合は true。それ以外の場合は false

例外

スレッドが動作していません

次の例では、フォアグラウンド スレッドとバックグラウンド スレッドの動作を比較します。 フォアグラウンド スレッドとバックグラウンド スレッドを作成します。 フォアグラウンド スレッドは、ループが完了して終了するまでプロセスを for 実行し続けます。 ただし、この例の出力に示すように、フォアグラウンド スレッドの実行が完了したため、バックグラウンド スレッドの実行が完了する前にプロセスが終了します。

C#
using System;
using System.Threading;

class Example
{
    static void Main()
    {
        BackgroundTest shortTest = new BackgroundTest(10);
        Thread foregroundThread = 
            new Thread(new ThreadStart(shortTest.RunLoop));

        BackgroundTest longTest = new BackgroundTest(50);
        Thread backgroundThread = 
            new Thread(new ThreadStart(longTest.RunLoop));
        backgroundThread.IsBackground = true;

        foregroundThread.Start();
        backgroundThread.Start();
    }
}

class BackgroundTest
{
    int maxIterations;

    public BackgroundTest(int maxIterations)
    {
        this.maxIterations = maxIterations;
    }

    public void RunLoop()
    {
        for (int i = 0; i < maxIterations; i++) {
            Console.WriteLine("{0} count: {1}", 
                Thread.CurrentThread.IsBackground ? 
                   "Background Thread" : "Foreground Thread", i);
            Thread.Sleep(250);
        }
        Console.WriteLine("{0} finished counting.", 
                          Thread.CurrentThread.IsBackground ? 
                          "Background Thread" : "Foreground Thread");
    }
}
// The example displays output like the following:
//    Foreground Thread count: 0
//    Background Thread count: 0
//    Background Thread count: 1
//    Foreground Thread count: 1
//    Foreground Thread count: 2
//    Background Thread count: 2
//    Foreground Thread count: 3
//    Background Thread count: 3
//    Background Thread count: 4
//    Foreground Thread count: 4
//    Foreground Thread count: 5
//    Background Thread count: 5
//    Foreground Thread count: 6
//    Background Thread count: 6
//    Background Thread count: 7
//    Foreground Thread count: 7
//    Background Thread count: 8
//    Foreground Thread count: 8
//    Foreground Thread count: 9
//    Background Thread count: 9
//    Background Thread count: 10
//    Foreground Thread count: 10
//    Background Thread count: 11
//    Foreground Thread finished counting.

注釈

スレッドは、バックグラウンド スレッドまたはフォアグラウンド スレッドです。 バックグラウンド スレッドはフォアグラウンド スレッドと同じですが、バックグラウンド スレッドはプロセスの終了を妨げるものではありません。 プロセスに属するすべてのフォアグラウンド スレッドが終了すると、共通言語ランタイムによってプロセスが終了します。 残りのバックグラウンド スレッドはすべて停止され、完了しません。

既定では、次のスレッドはフォアグラウンドで実行されます (つまり、プロパティ IsBackground は を返します false)。

  • プライマリ スレッド (またはメイン アプリケーション スレッド)。

  • クラス コンストラクターを呼び出 Thread すことによって作成されたすべてのスレッド。

既定では、次のスレッドはバックグラウンドで実行されます (つまり、その IsBackground プロパティは を返します true)。

  • スレッド プール スレッド。ランタイムによって管理されるワーカー スレッドのプールです。 クラスを使用して、スレッド プールを構成し、スレッド プール スレッドの作業を ThreadPool スケジュールできます。

    注意

    タスクベースの非同期操作は、スレッド プール スレッドで自動的に実行されます。

  • アンマネージド コードからマネージド実行環境に入るすべてのスレッド。

適用対象

製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

こちらもご覧ください