C#開發的應用程序做退出程序的代碼

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

this.Close();//只是關閉當前窗體。

Application.ExitThread();//退出當前線程上的消息循環,並關閉該線程上的所有窗口。 也會失靈

Environment.Exit(0); //前面三種方法都不能很好的退出程序,此方法可以完全退出程序,這個要強制得多。

Process.GetCurrentProcess().Kill();//此方法完全奏效,絕對是完全退出



另:

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)。在程序退出時觸發所有線程的終止條件。

來源:http://www.itokit.com/2011/0916/69413.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章