繁体   English   中英

退出C#winforms应用程序

[英]Exiting a C# winforms application

我有一个从Excel导入数据的应用程序。 但是,当我运行winforms应用程序并且我使用System.Windows.Forms.Application.Exit();侵入应用程序时System.Windows.Forms.Application.Exit(); 我仍然可以在任务管理器中看到“MyAppName”.vshost32.exe。

当我以调试模式退出应用程序时,表单关闭,但VS IDE未“停止”。

如何确保应用程序正确结束。

您对Application.Exit()调用工作正常。 MyAppName.vshost32.exe可执行文件是用于调试目的的主机。 无论是否存在活动的调试会话,它都会在Visual Studio中打开项目时运行。

更新:好的,我误解了。 以上是正确的,但您可能在后台挂起线程时遇到问题。 您需要终止线程以使其正常关闭。 Asher的答案涵盖了这一点。 如果你只是想做一个超级黑客的快速和肮脏的杀戮,你可以使用以下(虽然我不负责副作用,因为它是非常hacky):

System.Diagnostics.Process.GetCurrentProcess().Kill();

该进程不会终止,因为它仍然有前台线程在运行

如果在应用程序中创建线程,则需要将它们标记为后台线程,或者确保它们在您希望应用程序退出时终止。

你有没有尝试过更残酷的Environment.Exit()函数?

Application.Exit()只发送一条消息说要关机; 如果消息永远不会被处理(无论出于何种原因),应用程序将无限期地保持运行。

Application.Exit()MSDN文档

Exit方法停止所有线程上所有正在运行的消息循环,并关闭应用程序的所有窗口。 此方法不一定强制应用程序退出。 Exit方法通常在消息循环中调用,并强制Run返回。

我有一个类似的问题,由第三方工具导致我不允许我将线程设置为背景。 多项式有正确的想法,但语法是这样的:

System.Diagnostics.Process.GetCurrentProcess().Kill();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM