C#中如何退出程序

 c#退出应用程序办法:
  1、Application.Exit();//好像只在主线程可以起作用,而且当有线程,或是阻塞方法的情况下,很容易失灵。


  2、Application.ExitThread();//退出当前线程上的消息循环,并关闭该线程上的所有窗口, 也会失灵。


  3、Environment.Exit(0); // 这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净。 


  4、Process.GetCurrentProcess().Kill();//此方法完全奏效,绝对是完全退出。

看下面例子:

强制突出当前程序要用:System.Environment.Exit(int exitcode)方法;该方法:终止当前进程并为基础操作系统提供指定的退出代码。

如下则问题解决:

复制代码代码如下:

private void frmFileDisposal_Closed(object sender, System.EventArgs e)
{         
 System.Environment.Exit(System.Environment.ExitCode);   
 this.Dispose();
 this.Close();
}
或者把它放到事件里:

代码如下:

while (MessageBox.Show("退出当前窗体?", "", MessageBoxButtons.YesNo) 
   ==   DialogResult.No)
{  
  ...       
}
System.Environment.Exit(System.Environment.ExitCode);


 
还有一种方法:

 

代码如下:

System.Threading.Thread.CurrentThread.Abort();
或者

代码如下:

Process.GetCurrentProcess().Kill()
或者

代码如下:

Application.ExitThread();
或者

代码如下:

Application.ExitThread()
不过以上方法,都是强制直接退出了整个程序,不只是关闭子窗体。可能还会引发某些问题。

我感觉最好方法的就是,在子窗体的Closing事件中,写循环退出条件,这样就可以避免某些未知的错误,而且可以只关闭子窗体,并释放子窗体占用的资源。
Application.Exit(); 方法停止在所有线程上运行的所有消息循环,并关闭应用程序的所有窗口。
Application.Exit 是一种强行退出方式,就像 Win32 的 PostQuitMessage()。它意味着放弃所有消息泵,展开调用堆栈,并将执行返回给系统。

猜你喜欢

转载自blog.csdn.net/mzhifa/article/details/81169250