一部のハードウェアセンサー用のクローズドソースAPIがあり、そのセンサーのクエリに使用しています。APIは、C#相互運用機能を介して使用するDLLとして提供されます。APIの機能がブロックされています。通常はエラー値を返しますが、場合によっては返されないこともあります。
この状況を検出できる必要があり、その場合はブロックされたスレッドを強制終了します。これはC#でどのように行うことができますか?
それらが呼び出されているスレッドは、BackgroundWorkerを介して作成されます。関数を呼び出す前に設定し、戻ったときにリセットできる、関数呼び出しをブロックするための簡単なウォッチドッグを探しています。ただそこに座って、私が戻ってくるのを待つべきです。そうしないと、スレッドが強制終了され、1)APIが再び解放され、アプリケーションのスレッドがまだぶら下がっていないため、最終的に戻った場合に何かを実行します。2)再実行などの他の回復手段を実行できます。 APIを初期化して、引き続き使用します。