退出C#winforms应用程序

Tro*_*roy 16 c# visual-studio-2010 winforms

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

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

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

Pol*_*ial 23

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

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

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


Ash*_*her 17

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

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


Cam*_*ron 7

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

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

MSDN文档Application.Exit():

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