我正在使用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錯誤,所以他們無能爲力。
我的猜測是,他們的背景工作者不希望在某件事情中斷時死亡。
是否有任何可能的方式來殺死它「好方法」(這樣它就不會出現這些錯誤)?
你可以發佈適當的窗口關閉消息到這個應用程序的主窗口嗎? – 2012-08-08 18:43:59