イベントがトリガーされるのを待たなければなりません。私の最初の解決策は、AutoResetEvent
とWaitOne()
を使用することでしたが、イベントは常にが待機タイムアウトが終了した直後にトリガーされました。そこで私は下のアプローチに戻りましたが、私はまだ同じ問題を抱えています。タイムアウトが終了してから2〜3秒後に、タイムアウトが何であってもイベントが発生します。タイムアウトが終了した後にイベントがトリガーされる
private void OnResponseArrived(object sender, ResponseEventArgs args)
{
_delayedResponse = args.VerificationResponse;
}
イベント自体は、上記の関数を呼び出す他の関数からトリガされる:ここ
_wait = true;
_delayedResponse = null;
var thread = new Thread(delegate
{
while (_wait)
{
Thread.Sleep(500);
if (_delayedResponse != null)
return;
}
});
thread.Start();
var received = thread.Join(_responseTimeout);
_wait = false;
if (!received)
throw new TimeoutException(
"Timeout for waiting for response reached.");
return _delayedResponse;
イベントハンドラコードです。 基本的には次のようになります。
var result = DoStuff(); // Library function that is responsible for the event
if (result.Status == Status.Wait)
Wait(); // Function above
誰もがこの問題の原因とどのように私はそれを解決することができますどのような考えを持っていますか?
編集:関連性はなくなりました。 OnResponseArrivedイベントを転送しました。他の解決策が見つからなかったためです。
ここからイベントをトリガーしていますか? –
「タイムアウトに関係なくイベントが発生します」という意味はどうですか? 'ResponseArrived'イベント?このイベントが別のスレッドから起動されたことは確かですか? – Groo
ご意見ありがとうございます。私は質問を更新しました。 – xsl