我制作了一个Windows桌面应用程序(.net)。在运行我安装的版本时,应用程序变得没有响应。所以我试图在任务管理器中结束它,它突然出现了#34;现在结束"我点击的按钮,但我的应用程序没有死。我尝试在任务管理器的进程选项卡中杀死它 - 然后也没死。那么我甚至得到了Process Explorer并尝试在那里杀死它 - 它甚至没有杀死它。我终于使用了重新启动计算机。
所以我想知道在我的应用程序中是否可以/应该做些什么来防止这种情况发生?如果确实挂起并停止响应,有没有办法确保它在任务管理器中被杀死?
答案 0 :(得分:0)
为什么它挂起可能太复杂而无法回答,因为通常一个过程没有结束意味着出现意外的错误并且可能不会重复。如果每次运行时都会执行此操作,请逐步执行代码以确定其挂起的位置。理论上,所有任务都应该是“可以忍受的”。你试过的方式。由于它们并非总是如此,你实际上可能需要更强大的方法来杀死它们。
当执行类似于长时间运行的设备IO之类的操作时,您可能会在UI处于冻结状态的地方结束,而这些事情只需花费太多时间。为了更安全,请开始使用后台线程。如果你走那条路,Stackoverflow已经有了大量的答案(单独的)问题。我刚才看到的那个标题为" WinForm Application UI Hangs during Long-Running Operation"
您可以尝试在提升的命令提示符下使用taskill。 To elevate the command prompt,右键点击'以管理员身份运行'。 (链接中的更多细节。)
要使用taskill,格式为:taskkill [/s Computer] [/u Domain\User [/p Password]]] [/fi FilterName] [/pid ProcessID]|[/im ImageName] [/f][/t]
如果流程的PID为123,请运行taskill /pid 123
。
如果您看不到PID,请转到:查看(菜单)>选择列(菜单项)。从那里你可以选中PID框。
你可以试试free tool from Microsoft called PSTools,但我从来没有采取过这种做法。如果我无法通过提升的命令提示将其终止,我会重新启动。