【发布时间】:2012-08-09 02:49:49
【问题描述】:
我正在使用一个用 C# 编写的 .EXE 程序(从一家公司购买)。
有时我需要关闭它(从外部,而不是手动关闭 - 我使用我的小型 C# 程序来执行 Process.Kill,而不是在需要时)
如果程序没有做任何事情 - 我可以轻松杀死它。
但如果它正在做一些“工作”(我认为它在他们的代码中是“计时器”或“后台工作人员”) - 它会关闭,但会出现一个小弹出窗口,上面写着“致命错误”(和“确定”按钮)。我点击“确定”,然后它会弹出一个更大的弹出窗口:
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 错误,所以他们无能为力。
我的猜测是他们的后台工作人员不想在中间被打断时死去。
是否有任何可能的方法来杀死它“好方法”(这样它就不会给出这些错误)?
【问题讨论】:
-
你能把适当的窗口关闭消息发布到这个应用程序的主窗口吗?