參考http://www.jb51.net/article/58816.htm
http://www.cnblogs.com/fearless/articles/2364408.html
1.Environment.Exit 方法 (Int32)
強制退出當前線程,這是當前退出線程中最可靠,最徹底的,退出最乾淨的一種方法,不管什麼線程都可以退出,哈,強大吧!!!^^
該方法的含義是 退出此線程,並將退出代碼傳給系統
如果參數爲 “0”,表示處理已經成功完成。
2.this.Close()方法
該方法如果關閉的不是住線程,則窗體被關閉了,程序並未退出,另外如果有託管線程(非主線程),也無法乾淨退出。
當應用程序是多文檔窗體時,要想退出所有,必須手動的爲每個窗體調用Dispose()方法,標記爲垃圾回收。
3.Application.Exit()方法
通知所有消息泵必須終止,並且在處理了消息以後關閉所有應用程序窗口。該方法在多個線程或阻塞方法時,可能會造成失靈。
該方法停止在所有線程上運行的所有消息循環,並關閉應用程序的所有窗口。該方法並不強制應用程序退出。Exit 方法通常從一個消息循環內調用,該方法強制 Run 返回。若要只退出當前線程的某個消息循環,請調用 ExitThread。
警告 當調用 Application.Exit 方法以退出應用程序時,不引發 Form.Closed 和 Form.Closing 事件。如果在必須執行的其中一個事件中有驗證代碼,則在調用 Exit 方法之前,應分別爲每個打開的窗體調用 Form.Close 方法。
windows運行和初始化後,就進入消息循環,既然exit強制run返回那程序也就結束了,就會調用析構函數釋放內存 。
4.Application.ExitThread()方法
強制中止調用線程上的所有消息,同樣面臨其它線程無法正確退出的問題。