2012-09-13 78 views
47

在調試我的C#應用​​程序時,我注意到下列語句發生了大量事件: 「線程 - 已退出,代碼爲0(0x0)。」 應用程序繼續工作,沒有任何例外情況被捕獲/不受歡迎。該線程已退出代碼0(0x0),沒有無用的異常

該應用程序在Windows 7 64位運行,並與x86平臺調試。

+1

你確定那些是你的主題?如果是這樣,你不指望他們完成? – SLaks

回答

63

這只是調試消息。您可以通過右鍵點擊輸出窗口將其關閉,並取消選中線程結束消息。

http://msdn.microsoft.com/en-us/library/bs4c1wda.aspx

除了從應用程序編程的那樣,輸出窗口 可以顯示有關信息:

  • 模塊調試器已加載或卸載。

  • 例外拋出。

  • 退出的進程。

  • 線程退出。

2

如果你的應用程序直接或間接使用線程(即後面的情景就像一個第三方庫)是絕對常見的有螺紋終止他們完成後...這基本上就是你所描述的...調試器顯示此消息...你可以在調試器配置,如果你不希望它不再顯示此信息...

如果上面沒有幫助,那麼請提供更多的細節,因爲我不知道究竟是什麼問題是你的臉...

5

那麼,一個應用程序可能有很多線程並行運行。有些是由你編寫的,有些是由框架類運行的(特別是如果你在GUI環境中)。

當一個線程完成其任務時,它退出並停止存在。 有沒有在這個驚人的,你不應該在乎。

+0

我討論的線程不是我的(或不屬於我的應用程序)。但是,我的應用程序需要連接到一個Linux AIX服務器,該服務器返回大量已停止的進程。我對這臺服務器的工作原理還不清楚(哪個是它的任務),但我想上述的線程可能會影響服務器的行爲。 – Gionata

+0

好吧,也許線程實際上會影響你的應用程序,但你得到的信息告訴你它們終止成功。所以你可以試着找出它們運行的​​原因(Debug menu => windows => threads),但這是正常的。 – Kek

+0

它們通常結束,但Linux服務器停止執行的進程可能是.net框架線程的副作用。也許應用程序在多線程實現中存在各種編程錯誤。可能嗎? – Gionata

1

框架創建線程,支持創建的每個窗口,例如,當你創建一個表單和.Show()它。當窗口關閉時,線程終止(即它們退出)。

這是正常行爲。但是,如果應用程序正在創建線程,並且存在大量與這些線程相對應的線程退出消息(可能會通過線程的名稱來告訴它們,通過在應用程序中給它們不同的名稱),那麼這可能表明存在問題由於程序邏輯錯誤,當應用程序不應該創建線程時。

這將是一個有趣的隨訪有樓主讓我們知道他/她發現了關於與服務器崩潰的問題。我有一種感覺,這與此無關......但很難從發佈的信息中看出來。

3

爲了完成BlueM的接受的答案, 您可以在這裏desactivate它:

工具>選項>調試>常規輸出設置>線程退出消息:關

+0

BlueM的接受答案實際上有一個更簡單的解決方案:_「你可以通過右鍵點擊輸出窗口來關閉它,並取消選中線程結束消息」 –

相關問題