スレッド処理を使用すると、C# プログラムが同時処理を実行し、一度に複数の操作を行うことができるようになります。たとえば、スレッド処理を使用すると、ユーザー入力を監視したり、バックグラウンド タスクを実行したり、複数の入力ストリームを同時に処理したりできます。System.Threading 名前空間により、マルチスレッド プログラミングをサポートするクラスとインターフェイスが用意され、スレッドの新規作成および開始、複数スレッドの同期、スレッドの中断、スレッドの中止などのタスクを従来よりも簡単に実行できます。
メイン スレッドの外部で実行する関数を作成し、新しい Thread オブジェクトでそれを指すようにするだけで、C# コードにスレッド処理を組み込むことができます。C# アプリケーションで新しいスレッドを作成する方法を次のコード例に示します。
System.Threading.Thread newThread;
newThread = new System.Threading.Thread(anObject.AMethod);
次のコード例では、C# アプリケーションで新しいスレッドを開始します。
マルチスレッド処理によって、応答性やマルチタスクに関連する問題が解決されますが、同時に、リソースの共有や同期という問題が発生することもあります。メインのスレッド スケジュール機構に応じて、スレッドが警告なしに中断され、再開されるためです。詳細については、「スレッドの同期 (C# プログラミング ガイド)」を参照してください。概要については、「スレッドの使用とスレッド処理」を参照してください。
スレッドには、次の特徴があります。
-
スレッドを使用すると、C# プログラムで同時処理を実行できるようになります。
-
.NET Framework の System.Threading 名前空間により、以前よりも簡単にスレッドを使用できます。
-
スレッドは、アプリケーションのリソースを共有します。詳細については、「スレッドの使用とスレッド処理」を参照してください。
詳細については、以下のトピックを参照してください。
詳細については、「C# 言語仕様」の次のセクションを参照してください。
-
3.10 実行順序
-
8.12 lock ステートメント
-
10.4.3 Volatile フィールド
-
10.7.1 フィールドのように使用するイベント
処理手順
Monitorによる同期化の技術サンプル
待機による同期化の技術サンプル
関連項目
Mutex
概念
C# プログラミング ガイド
ミューテックス
Monitor
インタロックされた操作
AutoResetEvent
デリゲート (C# プログラミング ガイド)
その他の技術情報
Thread クラス
[HOWTO] Visual C# .NET を使用してマルチスレッド環境で共有リソースへのアクセスを同期する方法