は、USBデバイスがバグだらけであるということです。いつでもWindowsプロセスに何かが起こる可能性があります。デバイスはこれに対処できる必要があります。相互作用していたプロセスが消えた場合、デバイスはこれを認識して対処できる必要があります。私は仕様を知っていません(ドライバーの作者ではありません)が、そこには、それを使用していたプログラムが強制終了されたために働くだけでなく、たくさんのUSBデバイスがあります。第二の問題に私をもたらした
、:あなたの説明からは、「他のプロセスは、」強制的にあなたのプログラムを終了しているようです。どうして?プログラムを終了させるためのより優雅な方法があります。ユーザーが「閉じる」ボタンをクリックしたかのように最低でも、ただでさえ良く、(プロセス間通信のいくつかの種類を提供Altキーになど + F4を押すと、WM_CLOSE
メインウィンドウを送信名前付きパイプ)を使用して、親プロセスが特定のコマンド(プログラムを閉じるなど)をプログラムに与えることができます。あなたのプロセスが強制終了されている場合
、あなたがとにかくないそのプロセスの中から、それについてできることは何もありません。シャットダウンコードを実行する必要はなく、プロセスが強制終了された後も継続して実行される特別なスレッドを作成することはできません。
1つのオプションは、まだ別のプログラム、プログラムの状態を監視する「ウォッチドッグ」を書くことになります。プログラムが終了すると、ウォッチドッグがUSBデバイスをクリーンアップする可能性があります。しかし、それは万能薬ではありません。誰かがウォッチドッグのプロセスもやめることができます。
しかし、他のプロセスとあなた間の協力のも、最低額がありますように、あなたは物事を手配することができれば、あなたは、このようなApplication.Exit
イベントやウィンドウのClosing
やClosed
イベントなどの通常のメカニズムを利用することができます。
ええと...私は["ついにはいつも"伝説を実行する](http://thedailywtf.com/articles/My-Tales)を思い出させます。しかし、合理的な期待があるので、あなたの質問と比較するのは完全に公正ではありません。 – JDB
@JDBそれは素敵な物語でした!さて、プラグを抜くのは少し極端ですが、「Terminate from Task Manager」やスタックオーバーフローのエラーも考慮する必要があります。たとえ答えが「いいえ、おい」であっても、私は状況を捉え、問題を解決するための別の方法を探します。 – heltonbiker