当前位置: 首页 > 编程语言 > C#

为什么Application.Exit不能正常工作?分享

时间:2023-04-10 14:47:05 C#

为什么Application.Exit不起作用?我有一个应用程序,在取消对话框时出现奇怪的错误。如果盒子被取消了,app就不能继续了,所以就退出了,但是不知为什么又不能用了,所以一直跑着就崩溃了。我调试了问题,应用程序以某种方式在Application.Exit调用之后运行。我在调试模式下运行,这是相关的,因为少量代码依赖于定义的RELEASE变量。这是我的应用程序退出代码。我跟踪了代码,它进入了ExitApp方法,并继续运行,将控制权返回给调用者并最终崩溃。这是一个通过远程桌面连接提供报告的应用程序,这就是退出代码有点奇怪的原因。它试图终止远程会话,但只在发布时运行,因为我不想在每次测试运行时关闭我的开发机器。privatevoidExitApp(){HardTerminalExit();应用程序.退出();}//当在开发计算机上运行在调试模式下时,这将不会运行以避免关闭开发计算机//当在发布模式下,远程连接或运行它的其他计算机将被关闭。[有条件的(“RELEASE”)]privatevoidHardTerminalExit(){WTSLogoffSession(WTS_CURRENT_SERVER_HANDLE,WTS_CURRENT_SESSION,false);我在Application.Exit行之前运行了一个调试器,没有任何React,然后在我跳过该行后控制权返回给调用者。这是怎么回事?这是一个Windows窗体应用程序。这篇文章扩展了您正在经历的同一思路:http://www.dev102.com/2008/06/24/how-do-you-exit-your-net-application/基本上:另一种看法这种讨论:http://geekswithblogs.net/mtreadwell/archive/2004/06/06/6123.aspx这篇文章指出了一个很好的提示:您可以确定是否已调用System.Windows.Forms.Application.Run.如果为true,将调用Run,您可以假设WinForms应用程序正在按如下方式执行。if(System.Windows.Forms.Application.MessageLoop){//使用它因为我们是WinForms应用程序System.Windows.Forms.Application.Exit();}else{//使用这个因为我们是一个控制台应用程序System.环境.退出(1);最近遇到了这个问题(Application.Exit没有正确终止win-forms的消息泵与Application.Run(newForm())),我发现如果你在构造函数中生成一个新线程或者启动一个后台worker,这将阻止Application.Exit运行。将所有“RunWorkerAsync”调用从构造函数移动到表单Load方法:publicForm(){this.Worker.RunWorkerAsync();}移动到:publicvoidForm_Load(objectsender,EventArgse){this.Worker.RunWorkerAsync();尝试Environment.Exit(exitCode)。在许多情况下,我使用Thread.CurrentThread.Abort()并且进程被关闭。似乎Application.Exit没有正确连接当前线程。还要确保应用程序中运行的所有线程都将IsBackground属性设置为true。非后台线程可以很容易地阻止应用程序退出。确保没有Console.ReadLine();在你的应用程序和Environment.Exit(1);将工作并关闭您的应用程序。这个应用程序是否使用Application.Run()运行(在Main方法Application.Run()中?否则Application.Exit()将不起作用。如果你自己写了Main方法并想停止应用程序,那么只能是通过从Main方法返回(或终止进程)来停止。试试这个:在Program.cs文件中:AfterApplication.Run(newform());AddApplication.Exit();以上是C#学习教程:为什么Application.Exit不能正常运行?所有分享的内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注。本文收集自网络,不代表立场,如涉及侵权,请点击右侧联系管理员删除,如需转载请注明出处: