C#でスレッドIDを取得する方法|CurrentThreadとManagedThreadIdの使い方
スレッドとは、プログラムの実行経路(パス)として定義されるものです。各スレッドはそれぞれ固有の制御フローを持ちます。アプリケーションに複雑で時間のかかる処理が含まれる場合は、複数の実行パス(スレッド)を用意し、各スレッドが特定の作業を担当するように設計すると、多くの場面で有効です。
スレッドは「軽量プロセス」とも呼ばれます。スレッドの代表的な活用例としては、現代のオペレーティングシステムにおける並行プログラミングの実装が挙げられます。スレッドを適切に利用することで、CPUサイクルの無駄を削減し、アプリケーション全体の効率を高めることができます。
C#におけるスレッドの扱い方
C#では、System.Threading.Threadクラスを使用してスレッドを操作します。このクラスを利用することで、マルチスレッドアプリケーション内の個々のスレッドを作成したり、アクセスしたりすることが可能です。なお、プロセス内で最初に実行されるスレッドは「メインスレッド」と呼ばれます。
C#プログラムの実行が開始されると、メインスレッドは自動的に作成されます。Threadクラスを使って新たに作成されたスレッドは、メインスレッドに対する「子スレッド」とみなされます。現在実行中のスレッドにアクセスするには、ThreadクラスのCurrentThreadプロパティを使用します。
スレッド名とスレッドIDを取得するサンプルコード
以下の例では、CurrentThreadプロパティで現在のスレッドを取得し、スレッド名を設定したうえで、ManagedThreadIdプロパティを使ってスレッドIDを出力しています。
class Program{
public static void Main(){
Thread thr;
thr = Thread.CurrentThread;
thr.Name = "Main thread";
Console.WriteLine("Name of current running " + "thread: {0}", Thread.CurrentThread.Name);
Console.WriteLine("Id of current running " + "thread: {0}", Thread.CurrentThread.ManagedThreadId);
Console.ReadLine();
}
}実行結果
Name of current running thread: Main thread
Id of current running thread: 1
ポイントまとめ
- 現在のスレッドへのアクセスにはThread.CurrentThreadプロパティを使用する
- スレッドの一意な識別子はManagedThreadIdプロパティで取得できる
- スレッド名はNameプロパティで設定・参照できる
-
【Tkinter】テキストウィジェット(Text)から入力値を取得する方法
PythonのTkinterでは、Textウィジェットを使って複数行のテキスト入力欄を簡単に作成できます。しかし、GUIアプリケーションを開発していると、ユーザーがテキストウィジェットに入力した内容をプログラム側で取得したい場面がよくあります。 テキストウィジェットからユーザーの入力を取得するには、.get()メソッドを使用します。このメソッドには取得する文字列の範囲を指定する必要があり、一般的にはテキストの先頭を示す 1.0 から末尾を示す end までを範囲として指定します。 コード例 # tkinterライブラリをインポート from tkinter import * # tkinte
-
Windows 11で最高のパフォーマンスを引き出す方法【初心者向け最適化ガイド】
Windows 11は一般ユーザー向けに正式リリースされ、数多くの新機能が搭載されました。スタートメニューをお気に入りのアプリに合わせてカスタマイズでき、UIの変更によってこれまでとはひと味違う快適な操作体験が得られます。 また、ここ数か月の間にMicrosoftによるメモリ管理やディスク使用量の改善、CPU使用率やバッテリー駆動時間への対応などが進められ、OSのパフォーマンスにもさまざまな改良が加えられています。 しかしその一方で、Windows 11がスムーズかつ高速に動作するのは比較的新しいPCであり、セキュリティ要件を満たしている古いパソコンでは体感できるほどの改善が見られないのが実情