程序结束时进程未终止

4

当我关闭我的程序主窗口后,进程仍在后台运行。如何检查这个奇怪问题的原因?

(我不知道我的程序代码的哪一部分是相关的)


你的默认窗口/应用程序是否启动了一个充当“默认窗口”的窗口,并且可能隐藏了初始窗口?那么它可能只会关闭子窗口。 - Joe
4个回答

7

首先检查应用程序的ShutdownMode属性的值是否等于ShutdownMode.OnMainWindowClose--如果不是,请查看实际值是否阻止应用程序关闭。

如果这不能解决问题,则在主窗口关闭后,您可能仍有一个或多个非后台线程在运行,从而阻止进程关闭。中断调试器并查看还有多少个线程仍然存活以及它们正在做什么;这将带领您找到解决方案。


找到了!它被设置为OnLastWindowClose。谢谢 :) - Gilad Naaman

3

要查看当前正在运行并阻止应用程序终止的线程,只需在Visual Studio中按“中断所有”按钮,并查看光标停留的位置。

注意:您可以通过调用Environment.Exit();来强制终止应用程序。


2

可能的原因是您创建了未设置为后台的线程或调用了执行此操作的代码;这可能会使您的进程在关闭主线程后仍然“活动”。

确保在退出之前终止所有线程或将它们的IsBackground属性设置为true。


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接