c#開發的應用程序做退出程序的代碼【轉】


本文出自:http://www.itokit.com/2011/0916/69413.html

#開發的各種退出應用程序的代碼。並詳細介紹了各實現方法的不同點。               

Application.Exit();//好像只在主線程可以起作用,而且當有線程,或是阻塞方法的情況下,很容易失靈 this.Close();//只是關閉當前窗體。 Application.ExitThread();//退出當前線程上的消息循環,並關閉該線程上的所有窗口。 也會失靈 Environment.Exit(0); //前面三種方法都不能很好的退出程序,此方法可以完全退出程序,這個要強制得多。 Process.GetCurrentProcess().Kill();//此方法完全奏效,絕對是完全退出。

 

一些操作可以關注:GC.Collect()

 

另:

1,將主線程設置為后台進程。方法是將主線程的isBackground = true。據說,這樣在關閉主程序時后關閉主線程,並關閉所有的線程。

 

2,有人列出了c#程序退出的幾種方法:

     (1)Application.Exit()//好像只在主線程可以起作用,而且當有線程,或者是阻塞方法的情況下,很容易失靈。

     (2) System.Environment.Exit(0) //無論在主線程或其它線程,都可以吧程序結束干凈

     (3)Application.ExitThread();

但是我發現(2)這個方法在.netFrame Work compact下是沒有的我這樣

最后我的解決辦法是:強制退出程序進程。代碼如下:

System.Diagnostics.Process tt = System.Diagnostics.Process.GetProcessById(System.Diagnostics.Process.GetCurrentProcess().Id);                tt.Kill();

當然,這種方法很暴力。良好的程序設計應該是,所有的線程都有條件可以結束循環以退出(包括timer)。在程序退出時觸發所有線程的終止條件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM