C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#でスレッドの現在の状態を確認する方法|ThreadStateプロパティの使い方

C#でスレッドの現在の状態を確認するには、ThreadState プロパティを使用します。このプロパティは、スレッドが「Unstarted(未開始)」「Running(実行中)」などどの状態にあるかを、ThreadState 列挙型の値として返します。以下に具体的なコード例を示します。

コード例1:ThreadState と ManagedThreadId の取得

using System;
using System.Threading;
public class Demo {
    public static void Main(){
        Thread thread = new Thread(new ThreadStart(demo1));
        ThreadPool.QueueUserWorkItem(new WaitCallback(demo2));
        Console.WriteLine("Current state of Thread = "+thread.ThreadState);
        Console.WriteLine("ManagedThreadId = "+thread.ManagedThreadId);
    }
    public static void demo1(){
        Thread.Sleep(2000);
    }
    public static void demo2(object stateInfo){
        Console.WriteLine("Thread belongs to managed thread pool? = "+Thread.CurrentThread.IsThreadPoolThread);
    }
}

出力結果

上記のコードを実行すると、次のような出力が得られます。

Current state of Thread = Unstarted
ManagedThreadId = 3

この例では、スレッドを生成しただけで Start() メソッドをまだ呼び出していないため、状態が Unstarted と表示されています。また、ManagedThreadId プロパティを使うことで、マネージドスレッドに割り当てられた一意の識別子(ID)を取得できます。

コード例2:Start() 呼び出し前後での状態の変化

次に、Start() の呼び出し前後でスレッドの状態がどう変化するかを見てみましょう。

using System;
using System.Threading;
public class Demo {
    public static void Main(){
        Thread thread = new Thread(new ThreadStart(demo));
        Console.WriteLine("ManagedThreadId = "+thread.ManagedThreadId);
        Console.WriteLine("Current state of Thread = "+thread.ThreadState);
        thread.Start();
        Console.WriteLine("Current state of Thread = "+thread.ThreadState);
    }
    public static void demo(){
        Console.WriteLine("Thread belongs to managed thread pool? = "+Thread.CurrentThread.IsThreadPoolThread);
    }
}

出力結果

上記のコードを実行すると、次のような出力が得られます。

ManagedThreadId = 3
Current state of Thread = Unstarted
Thread belongs to managed thread pool? = False
Current state of Thread = Running

この例では、Start() を呼び出す前は Unstarted だったスレッドの状態が、呼び出し後には Running に変化していることがわかります。また、明示的に作成したスレッドはスレッドプールには属さないため、IsThreadPoolThread プロパティは False を返します。

主な ThreadState の値

  • Unstarted:スレッドが作成されたものの、まだ開始されていない状態
  • Running:スレッドが開始され、実行中の状態
  • WaitSleepJoinSleep()Join() などの呼び出しによって待機中の状態
  • Suspended:スレッドが一時停止されている状態
  • Stopped:スレッドが停止・終了した状態
  1. 【Android】現在のスレッドIDを取得する方法を解説

    本記事では、Androidアプリで現在実行中のスレッドIDを取得する方法を、サンプルコードとともに解説します。スレッドとは?例に入る前に、まず「スレッド」について簡単におさらいしておきましょう。スレッドとは、軽量なサブプロセス(処理の単位)のことであり、UIの動作を妨げることなくバックグラウンドで処理を実行するために使われます。メインスレッドとは別に動作させることで、画面の描画やユーザー操作をブロックせずに、重い処理を並行して行うことが可能になります。このサンプルでは、Thread.currentThread().getId() を呼び出すことで、現在実行中のスレッドIDを取得し、TextVi

  2. 【Android開発】現在実行中のアプリケーションを確認する方法を解説

    はじめにこの記事では、Androidアプリで現在実行中のアプリケーション(タスク)の情報を取得して表示する方法を、サンプルコードとともにステップバイステップで解説します。ActivityManagerクラスのgetAppTasks()メソッドを使用することで、実行中のタスクの詳細情報を簡単に取得できます。開発環境の準備ステップ1:新規プロジェクトの作成Android Studioを開き、メニューから「File」⇒「New Project」を選択して新しいプロジェクトを作成します。プロジェクト名やパッケージ名など、必要な情報をすべて入力してプロジェクトをセットアップしましょう。ステップ2:レイア