2012-02-11 8 views
1

私はC#のWindowsアプリケーションを使用しています。私は自分のスレッドで別のクラスを開始する場所で作業しています(つまり、Thread1のClass1インスタンス、Thread 2のClass2インスタンス、等)。スレッドと異なるクラスによるモニタロックのための共有変数

スレッドを正しく中断/再開しようとしていますが、さまざまなクラスとスレッド間でWait/Pulse of Monitorのロック変数を共有する方法がわかりません。

これは簡単な答えが必要なようですが、私はそれを理解できません。私は本当に助けていただきありがとうございます!

ありがとうございます!

+3

「これは簡単な答えが必要なようです」< - 私はあなたの問題を見ると思います。 – Hogan

+0

@ L.B。問題を完全に理解することなく「静的」にコメントするのは難しいですが、問題に「公的フィールド」を正当化するものは何もありません(ああ、削除されたコメントに関連します) –

答えて

1

がexのために、公共staticフィールドを使用しています。、

public class Sync 
{ 
    public static object LockObject = new object(); 
    //or any other sync mechanism 
    //AutoResetEvent,ManualResetEvent,Semaphore,CountdownEvent,Mutex etc. 
} 
+0

単にSync :: ManuelResetEventObjを呼び出すか、メインクラスやスレッド化されたクラスから何もないのですか? – Harry

+0

はい 'Sync.LockObject'は任意のスレッドまたはメインクラスで使用できます –

+0

ありがとう、LockObjectを複数のスレッドが同時に中断するための配列にできますか? – Harry

0

モニターのロックはshnchronizationするのに便利ですが、メッセージング APIとして使用した場合、あなたが正確に知っておく必要があるので、それは通常のみ、二つのスレッドまで拡張各自がメッセージを受け取るかどうかを知ることができます。

状況が複雑になると、通常はAutoResetEventまたはManualResetEventがより賢明になります。これらは時間的に重要ではないため、注文に関係なくゲートを通過します。

関連する問題