2010-12-05 24 views
1

我有一個Windows應用程序C#4.0 multithreadings問題是,當我關閉應用程序,進程停留在,無論我做什麼,所以我必須這樣做:重新啓動Windows窗體應用程序

environment.exit(1); 

或進程wouldnt關閉,

問題是如果我執行environment.exit(1)然後application.restart()將無法正常工作。

任何想法如何殺死進程,然後重新啓動?應用程序創建

+0

殺死所有的線程程序催生了? – spender 2010-12-05 13:25:19

+5

不應該先嚐試修復多線程問題嗎? – ZippyV 2010-12-05 13:26:01

回答

0

線程必須退出應用程序,否則CPU和/或存儲將被掛線程消耗

+0

有一些線程必須運行所有的時間,他們正在監聽一個端口並從中獲取數據,所以我可以放棄關閉事件中的所有線程,但仍然不會結束進程。 – Stacker 2010-12-05 13:34:47

3

確保創建在後臺運行所有的工作線程前終止(設置IsBackground爲真在開始之前)。後臺線程不會阻止進程退出。

4

使用調試器。關閉主窗口後,使用Debug + Break All。調試+ Windows +線程。查看您在此處列出的線程的調用堆棧,以查找阻止該程序終止的線程。

0

您可以鍵入完全退出應用程序:

Application.Exit(); 

對於完全重新啓動應用程序:

Application.Restart();