これら 2 つが連携して機能しているとは確信していないため、これら 2 つが連携して機能することについて質問があります。
バックグラウンドワーカーを使用するコードがいくつかあり、 DoWork() 内でいくつかのロジックを実行します。このロジックは、単純に TcpClient オブジェクトを使用して、データを外部デバイスに送信します。
私の質問は、AutoResetEvent.WaitOne() を呼び出す DoWork() 内にあります。AutoResetEvent.Set() が呼び出されるまで、これは現在のスレッドを停止しますか? たとえば、AutoResetEvent.Set() がまったく呼び出されない場合、バックグラウンド ワーカーは単純に停止し、操作を実行しませんか?
これが本質的に悪い設計であるかどうかはわかりませんが、残念ながらそれをサポートしています:(
いくつかの擬似コードを編集します
bool done = false;
while (!done)
{
//some logic here
done = System.DateTime.Now.Hour == 10;
if (!done)
{
AutoResetEvent.WaitOne();
//Question will the while loop fire again or does it wait for the Set() to be called
//before continuing?
}
}