0

私は C# で書かれた .EXE プログラムを 1 つ使用しています (ある会社から購入しました)。
時々それを閉じる必要があります(手動ではなく外部から-必要に応じて代わりにProcess.Killを実行する小さなC#プログラムを使用します)
プログラムが何もしていない場合-簡単に強制終了できます。
しかし、それが何らかの「作業」を行っている場合(コードでは「タイマー」または「バックグラウンドワーカー」のいずれかだと思います)、閉じますが、「致命的なエラー」(および「OK」ボタン)という小さなポップアップが表示されます。「OK」をクリックすると、次のような大きなポップアップが表示されます。

System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
at
System.Windows.Forms.UnsafeNetiveMethods.DispatchMessageA(MSG&msg)
at 
System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UNsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(in t32 dbComponentID, Int32 Reason, Int32 pv LoopData)
at
System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason ApplicationContext context)
at
System.Windows.Forms.Applicaion.ThreadContext.RunMessageLoop(Int32reason, ApplicationContext context_
at System.Windows.Forms.Application.Run(Form mainForm)
at cawf.xad70bf2c5a1a269d.xef498c90a0302180()

(CAWF は、私が殺したばかりのプロセスの名前です)。
ここで [OK] をクリックした後、もう一度強制終了する必要があります。
彼らのサポートは、Windows のエラーだと言っているので、彼らにできることは何もありません。
私の推測では、何かの途中で中断されたときに死にたくないのは、彼らのバックグラウンド ワーカーであるということです。

「良い方法」で(これらのエラーが発生しないように)それを殺す方法はありますか?

4

2 に答える 2

2

はい、メイン ウィンドウに WM_CLOSE を投稿し、正常に閉じます。詳細については、この回答を参照してください: How to use WM_Close in C#?

于 2012-08-08T18:48:27.213 に答える
0

それを殺したい場合は、実行コマンドで殺します

win key + R

次に入力します

tskill cawf

また

tskill cawf.exe

それらのいずれかを試してください。

于 2012-08-08T18:49:49.223 に答える