2012-08-08 56 views
0

我正在使用C#編寫的一個.EXE程序(從一家公司購買)。
有時我需要關閉它(從外部,而不是手動 - 我使用我的小C#程序,而不是在需要時執行Process.Kill)
如果程序沒有做任何事情 - 我可以很容易地殺死它。
但是,如果它正在做一些「工作」(我認爲它是「計時器」,或在其代碼中的「backgroundworker」) - 它會關閉,但會彈出一個名爲「致命錯誤」(和「確定」按鈕)的小彈出窗口。我點擊「確定」,然後給出了一個更大的彈出這樣說:爲什麼我在執行進程時收到AccessViolationException?

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是我剛剛殺了他們的進程的名稱)。
在我點擊確定後 - 我必須再次殺死它,然後才能死亡。
他們的支持說這是Windows錯誤,所以他們無能爲力。
我的猜測是,他們的背景工作者不希望在某件事情中斷時死亡。

是否有任何可能的方式來殺死它「好方法」(這樣它就不會出現這些錯誤)?

+1

你可以發佈適當的窗口關閉消息到這個應用程序的主窗口嗎? – 2012-08-08 18:43:59

回答

2

是的,發佈一個WM_CLOSE到它的主窗口並讓它優雅地關閉。看到這個答案的詳細信息:How to use WM_Close in C#?如果你想殺死它,然後通過運行命令殺掉它

0

win key + R 

然後鍵入

tskill cawf 

tskill cawf.exe 

嘗試之一那些。

相關問題