5

USB経由で接続されたデバイスでいくつかの操作を実行するWindowsフォームアプリケーションを開発しています。読み取り、書き込みなどのすべての操作のために、カスタムライブラリがあります。

ユーザーがボタンを押すと書き込み操作が行われます。

読み取るために、別のスレッドが作成されます。使用可能なライブラリの問題は、Read呼び出しがブロックされており、INFINITEタイムアウトがあることです。

接続に失敗した場合、このスレッドはデータを受信した場合にのみこの関数が中断するため、Read関数の呼び出しでスタックします。

そのようなシナリオでこのスレッドを強制終了する方法は何でしょうか?Thread.Abort()が機能していません。

このプログラミングにはC#を使用しています。

4

1 に答える 1

1

あなたのその Read メソッドはおそらくネイティブコードを呼び出すので、スレッドは中止できません。COM 相互運用機能を使用するスレッドを中止する方法はありません (少なくとも私はよく知っています)。そもそも Read メソッドがスレッドをブロックしている理由がわかります。Read メソッドを呼び出す前に、要件を確認してください。

この質問を見てください:アンマネージ DLL への呼び出しを中止する

于 2012-08-23T11:53:37.860 に答える