繁体   English   中英

使用c#关闭winforms中的整个表单

[英]close entire form in winforms using c#

关闭应用程序时,关闭整个Windows应用程序窗体的最佳方法是什么? 显然,退出应用程序后,该应用程序仍在运行。

如果在关闭应用程序的主窗体后,该应用程序仍在运行,则您有一些线程在执行该任务而无法完成。 您应该确定并确保它正常关闭。 完成此操作后,关闭主窗体时,您的申请过程应该会顺利进行,而无需携带武器并进行射击。

根据巴厘岛的评论,使用:

Application.Exit()

有关详细信息,请参见http://msdn.microsoft.com/zh-cn/library/ms157894.aspx (重点是我的):

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

不是关闭程序的最漂亮方法,但是如果您只想完全结束该过程,则只需Process.Kill()本身运行Process.Kill() 如果有任何未完成的线程正在运行,最好先优雅地关闭它们。 如果您不关心尚未完成的事情,那么可以解决这个问题:

foreach (Process p in Process.GetProcesses()) 
{ 
    if (p.ProcessName.Contains("appname")) 
    { 
        p.Kill();
    } 
}

理想情况下,按照Fredkrik的回答,您应该找出为什么您的应用仍然悬而未决。 但是,如果要强制退出应用程序,则需要使用Environment.Exit Application.Exit仅退出当前的消息泵(尽管可以肯定的是,除非调用了Application.Run多次,否则您只能打开它)。

从docco:

Environment.Exit方法终止此过程,并为底层操作系统提供指定的退出代码。

Application.Exit方法通知所有消息泵必须终止,然后在处理完消息后关闭所有应用程序窗口。

暂无
暂无

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

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