バックグラウンドスレッドで実行されるサードパーティのライブラリから発生したイベントがあります。このイベントは基本的に、ライブラリが監視しているシステムのステータス更新をリスナーに通知します。InvokeRequiredがtrueの場合、ハンドラーはUIスレッドでそれ自体を呼び出し、いずれの場合も、ステータス変更のエントリをテキストボックスのテキストに追加し、トレイに通知をポップアップします。
現在、問題は、これらのステータスの更新が非常に迅速に行われる可能性があることです。監視対象のシステムは、ミリ秒単位で「アイドル」状態からいくつかの中間体を経由して「準備完了」状態に移行できます。システムがこれらすべての中間状態を移行したことを知る必要があります。ただし、すべての状態変更がログに反映されるわけではありません。ブレークポイントを設定してハンドラーをステップスルーすると、最も奇妙な動作が示されます。ハンドラーはコードの最初の数行をステップスルーしてから、メソッドのエントリに戻ります。同じメソッドへの別の呼び出しが着信しているため、イベントまたはWindowsメッセージポンプのいずれかがメソッド呼び出しを中止しているように見えます。メソッド本体をロックブロックに入れても解決しません。
これは、このサードパーティライブラリを使用しない他のプロジェクトで以前に見たことがあります。連射イベントが単にウィンドウの再描画をトリガーしていたので、私はそこではそれほど心配していませんでした。それらがすべて起こった場合、素晴らしいですが、1つが短絡した場合、パイプ内に別の通過するものがありました。ただし、これはアプリケーションにとって非常に重要なタスクであり、イベントが発生するたびに順番に発生する必要があります(状態が実際に変化するほど速く発生する必要はありません。絶対にそれを予期していません)。
この短絡動作の原因は何ですか?また、どうすればそれを止めることができますか?