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

C#のThreadクラスで使える主なメソッド一覧

C#のThreadクラスには、マルチスレッドプログラミングを制御するためのさまざまなメソッドが用意されています。中でも特によく使われるのが StartSleepJoinAbort の4つです。

ここでは、Threadクラスが提供する主要なメソッドを一覧形式で紹介します。各メソッドのシグネチャと役割を確認しながら、用途に応じて活用してください。

Threadクラスのメソッド一覧

No.メソッドと説明
1

public void Abort()

呼び出されたスレッド上で ThreadAbortException を発生させ、スレッドの終了処理を開始します。通常、このメソッドを呼び出すとそのスレッドは終了します。

2

public static LocalDataStoreSlot AllocateDataSlot()

すべてのスレッド上に名前のないデータスロットを割り当てます。パフォーマンスを重視する場合は、ThreadStaticAttribute 属性を付けたフィールドを使うことが推奨されます。

3

public static LocalDataStoreSlot AllocateNamedDataSlot(string name)

すべてのスレッド上に名前付きデータスロットを割り当てます。こちらもパフォーマンス向上のため、ThreadStaticAttribute 属性付きフィールドの利用が推奨されます。

4

public static void BeginCriticalRegion()

スレッドの中止や未処理の例外が、アプリケーションドメイン内の他のタスクに悪影響を及ぼす可能性のあるコード領域に入ることをホストに通知します。

5

public static void BeginThreadAffinity()

マネージコードが、現在の物理的なOSスレッドの識別情報に依存する命令を実行しようとしていることをホストに通知します。

6

public static void EndCriticalRegion()

スレッドの中止や未処理の例外による影響が、現在のタスクのみに限定されるコード領域に入ることをホストに通知します。

7

public static void EndThreadAffinity()

マネージコードが、現在の物理的なOSスレッドの識別情報に依存する命令の実行を完了したことをホストに通知します。

8

public static void FreeNamedDataSlot(string name)

プロセス内のすべてのスレッドについて、名前とスロットの関連付けを解除します。パフォーマンス向上のためには、ThreadStaticAttribute 属性付きフィールドの利用が推奨されます。

9

public static Object GetData(LocalDataStoreSlot slot)

現在のスレッドの現在のドメイン内で、指定されたスロットから値を取得します。パフォーマンス向上のためには、ThreadStaticAttribute 属性付きフィールドの利用が推奨されます。

10

public static AppDomain GetDomain()

現在のスレッドが実行されているアプリケーションドメインを返します。

11

public static int GetDomainID()

一意のアプリケーションドメイン識別子を返します。

12

public static LocalDataStoreSlot GetNamedDataSlot(string name)

指定した名前に対応するデータスロットを検索します。パフォーマンス向上のためには、ThreadStaticAttribute 属性付きフィールドの利用が推奨されます。

13

public void Interrupt()

WaitSleepJoin 状態にあるスレッドに割り込みを行います。

14

public void Join()

呼び出し元のスレッドをブロックし、標準のCOMおよびSendMessageポンピングを継続しながら、対象のスレッドが終了するまで待機します。このメソッドには複数のオーバーロードが用意されています。

15

public static void MemoryBarrier()

メモリアクセスを同期します。現在のスレッドを実行しているプロセッサは、MemoryBarrier 呼び出し前のメモリアクセスが、呼び出し後のメモリアクセスより後に実行されるよう命令を並べ替えることはできません。

16

public static void ResetAbort()

現在のスレッドに対して要求された Abort をキャンセルします。

17

public static void SetData(LocalDataStoreSlot slot, Object data)

現在実行中のスレッドの指定されたスロットに、そのスレッドの現在のドメイン向けのデータを設定します。パフォーマンス向上のためには、ThreadStaticAttribute 属性付きフィールドの利用が推奨されます。

18

public void Start()

スレッドの実行を開始します。

19

public static void Sleep(int millisecondsTimeout)

指定された時間(ミリ秒)だけスレッドを一時停止させます。

20

public static void SpinWait(int iterations)

iterations パラメータで指定された回数だけ、スレッドを待機(スピン)させます。


  1. JavaのSwingWorkerクラスとは?GUIアプリで非同期処理を行う重要性と使い方を解説

    SwingWorkerクラスは、時間のかかる処理(長時間実行タスク)などをワーカースレッド上で非同期に実行し、その結果に基づいてイベントディスパッチスレッド(EDT)からSwingコンポーネントを安全に更新するための仕組みを提供します。このクラスはJava 1.6で導入されました。Swingでは、すべてのUI更新はEDT上で行う必要があります。しかし、EDT上で重い処理を直接実行すると画面がフリーズしてしまい、ユーザー体験を大きく損ないます。SwingWorkerを使えば、バックグラウンドでの処理とUIの更新を適切に分離できるため、応答性の高いデスクトップアプリケーションを実現できます。Swi

  2. JavaのSwingUtilitiesクラスとは?invokeAndWait()とinvokeLater()で実現するスレッドセーフなGUI操作

    JavaのSwingでは、コンポーネントが画面に表示された後、それらを操作できるのは「イベントディスパッチスレッド(Event Handling Thread)」と呼ばれる単一のスレッドだけです。これはSwingの重要な設計原則であり、複数のスレッドから同時にGUIを操作すると不整合や予期しない動作が発生するため、すべての描画・更新処理をこのスレッドに集約することで安全性を確保しています。開発者は、別途作成したコードブロックの参照をイベントディスパッチスレッドに渡すことができます。SwingUtilitiesクラスには、そのための2つの重要なstaticメソッド、invokeAndWait()