我的应用程序无法退出的原因

本文关键字:退出 应用程序 我的 | 更新日期: 2023-09-27 17:59:31

我们有一个用.net,c#,winforms编写的应用程序。我们注意到,有时在关闭应用程序时,该过程仍然存在。

不确定如何重现该行为,因此我正在寻找一些有关应用程序无法退出的原因的线索。

应用程序使用一些后台线程。线程池。想知道这是否是原因。还有什么可以产生这种效果的吗?

我的应用程序无法退出的原因

如果您的线程将 IsBackground 属性设置为 false,并且在应用程序关闭后仍处于活动状态,则它们将保留

该应用程序使用了一些 后台线程。线程池。 想知道这是否是原因。 还有什么可以产生这种效果的吗?

这绝对可能是原因,尽管我不能确定它是否真的。测试此假设的一种方法是确保显式创建的所有线程都指定为后台线程。这可以通过设置Thread.IsBackground = true来完成,这将允许应用程序在主线程结束时终止。如果至少有一个线程IsBackground = false则 CLR 将保持主机进程运行。

它很可能是一个正在运行的线程。如果您查看任务管理器中的进程,您可以通过从视图菜单中添加"线程"列来查看线程何时启动,以及线程退出时还有多少线程正在运行。

我会首先确保您以相同的线程数开始和结束。

获取进程资源管理器,可能还有进程监视器,并查看哪个线程处于挂起状态或正在运行状态。

如果您能够在调试中运行并关闭窗体,则 VS 不应返回到正常的代码编辑模式(它仍将激活调试中的暂停和停止按钮(。然后,可以按"暂停"并检查"线程"窗口,以查看仍处于活动状态的线程的调用堆栈卡在哪里。