私は3つの2つのクラスを持っています
Class A{
function A.1()
{
1. First calls B.2()
2. Checks for value X in class B.
}
}
Class B {
function B.1()
{
/*this function sets the variable X to true*/
}
function B.2()
{
/*Initiates the thread eventually that will start the function B.1 on different thread*/
}
}
これを変更して、クラス B で X が設定/変更されるまで A.1() が待機するようにします。これが私のアプローチです。
Class A{
function A.1()
{
1. First calls B.2()
**2. Call WaitforSet in class B**
3. Checks for value X in class B.
}
}
Class B {
/* Created one autoreset event S*/
function B.1()
{
/*this function sets the variable X to true*/
S.Set();
}
function B.2()
{
/*Initiates the thread eventually that will start the function B.1 on different thread*/
}
waitforSet()
{
S.waitone();
}
}
両方のスレッドが待機状態になるため、これが機能しない理由はわかりません。関数が呼び出し元のスレッドを待機状態にし、内部が X の設定を続行することを期待waitforSet()
していました。現在のスレッドのマネージド スレッド ID を確認したところwaitforSet()
、B.1()
それらが異なっていました。
ここで何が欠けているか、またはこれを達成するためのより良い方法を教えてもらえますか?
PS:私はC#でこれを達成しています