2010-01-19 35 views
0

我正在使用c#編寫一個Windows窗體,它將WSP安裝並部署到Sharepoint服務器。 我遇到的問題是,當我檢測到問題並退出應用程序或按下窗體右上角的十字時,窗體關閉,但任務仍在進程列表中。退出c#應用程序將其留在內存中

我的退出代碼是:

this.close(); 
application.quit(); 

我形式之間切換的方法是:

form2.show(); 
form1.hide(); 

我只能猜測,到目前爲止,是我使用的一些背景的工人,可能這些不被同時終止?

感謝

+0

C#區分大小寫。這是'this.Close()'不'this.close()'等 – 2010-01-19 08:36:33

回答

3

的進程終止時未設置爲後臺線程的所有線程終止。

BackgroundWorker內部調用委託上的BeginInvoke並導致代碼從ThreadPool運行一個線程。 ThreadPool線程將IsBackground設置爲true,所以它不應該導致應用程序掛起。 BackgroundWorker不太可能導致問題。

更有可能的是,您在自己的代碼中有一個地方使用new Thread()或類似方法手動創建新線程,並且未將此線程的IsBackground成員設置爲true。

+0

我沒有直接使用任何線程,只是後臺工作人員不幸的是,它不會發生在調試時,如果我只按「停止調試」時獨立運行,窗戶全部關閉,但過程仍在! – Nath 2010-01-21 10:47:45

+0

您是否使用任何COM組件或與Office進行任何集成Excel或Word?你有沒有可能在玩的第三方組件? – 2010-01-21 11:13:02

1

它應該很容易附加一個調試器(如果在機器上沒有顯示問題的調試器,則可以獲得Managed Stack Explorer),並且可以闖入進程以查看哪些線程當前正在執行。在Visual Studio中,您應該查看線程窗口並找到執行代碼的窗口。雙擊它,然後查看Call Stack窗口,看看有什麼東西存在。

相關問題