Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-在主线程完成后,什么可能阻止应用程序退出?_C# - Fatal编程技术网

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)希望应用程序退出的代码中的任何位置。这应该能奏效。