AutoResetEventは、WaitOne()呼び出しの途中でメッセージループを完全にフリーズし(場合によっては)、シグナルメッセージを効果的にブロックすることに気づきました。
IE:
- (UI)新しいスレッドが生成されました
- (UI)コードはWaitOne();を呼び出します。タイムアウト:10秒
- (T2)スレッドがデバイスを開き、Set()を呼び出します
- (UI)WaitOneはメッセージループをブロックします
- (UI)WaitOneタイムアウトが経過し、コードの実行が続行されます
- (UI)メインウィンドウは信号を受信して続行します(ただし、WaitOneは失敗しました)
何か案は?
編集:スレッドを指定するためのUI/T2を追加しました。また、サードパーティのライブラリを同期にしようとしています。デバイスを開くには、OpenOKまたはOpenFailedイベントを生成するOpen()呼び出しが含まれます。生成されたイベントに応じて、true / falseを返すboolOpen()呼び出しを作成しようとしています。