C#-在主线程完成后,什么可能阻止应用程序退出?
虽然主线程已完成,但进程仍在运行。C#-在主线程完成后,什么可能阻止应用程序退出?,c#,C#,虽然主线程已完成,但进程仍在运行。 原因可能是什么?如何防止它?在所有操作完成之前,应用程序不会退出 你可以做的事情: 当您想要退出时,设置某种信号,以便主线程以外的线程可以自行退出 对应用程序存在时应终止的线程使用后台线程 使用Environment.Exit是关闭应用程序的一种相当残酷的方式,如果可能的话应该避免。阻止应用程序退出的线程可能需要正确关闭,例如,以防止数据损坏。如果您正在调用application.exit(),这可能是您的问题。从MSDN: 此方法停止所有线程上所有正在运
原因可能是什么?如何防止它?在所有操作完成之前,应用程序不会退出 你可以做的事情:
- 当您想要退出时,设置某种信号,以便主线程以外的线程可以自行退出
- 对应用程序存在时应终止的线程使用后台线程
使用Environment.Exit是关闭应用程序的一种相当残酷的方式,如果可能的话应该避免。阻止应用程序退出的线程可能需要正确关闭,例如,以防止数据损坏。如果您正在调用
application.exit()
,这可能是您的问题。从MSDN:
此方法停止所有线程上所有正在运行的消息循环,并关闭应用程序的所有窗口此方法不会强制应用程序退出。退出方法通常从消息循环中调用,并强制运行返回
如果你问我的话,这个函数的名字是愚蠢的。可能应该被称为StopMessageLoops
或类似的东西。相反,请使用System.Environment.Exit()
阅读:使用调试器连接到进程,并查看剩余的线程。当所有线程都退出时,进程将退出
您可以尝试在应用程序和所有线程之间循环。不过,这可能会产生不良的副作用。可能该UI是在另一个线程上处理的?没有UI。我无法共享任何代码,很抱歉,您需要注释掉第5行。@Erik请尝试放置
System.Environment.Exit(0)代码>希望应用程序退出的代码中的任何位置。这应该能奏效。