2011-03-19 92 views
5


當我發出SOAP請求時我可以看到(在任務管理器中)我的應用程序的線程數從1(主線程)增加到8,這意味着7個附加線程,這部分是OK,然而,在從服務接收到響應之後,線程數量減少到4(3 +主線程),並保持這種狀態直到下一個請求發生。 因爲我不喜歡SOAP並且沒有太多的工作,有沒有人知道這是否正常,或者如果我可以殺死/停止「懸掛」線程?
使用德爾福2010SOAP請求留下線程掛起

附加信息:我在一個線程中運行的請求,是的我在Execute方法中調用「CoInitialize」和「CoUninitialize」。

測試應用程序:http://www.2shared.com/file/_dE4H-lO/soap_test_app.html

謝謝大家的時間。

+0

你在你的應用程序中創建任何線程?我問的原因是在線程中運行SOAP請求非常有用,所以它不會阻止你的主應用程序。 – 2011-03-19 12:26:54

+0

@Chris對不起,我忘了提出這個由於一些奇怪的原因,是的,我正在一個線程中運行請求,我動態創建對象並釋放它們。 – ComputerSaysNo 2011-03-19 12:29:16

+0

你能提供一些示例代碼嗎?這樣,我們可以嘗試重現您的情況,並查看哪些踏板保持活動狀態。 BTW:您可以使用[Process Explorer](http://technet.microsoft.com/en-us/sysinternals/bb896653)查看哪些線程處於活動狀態。 – 2011-03-19 12:54:25

回答

1

該應用程序的其他部分是對SOAP堆棧中的某些內容進行refcount。這些線程不會消失,直到發生其餘的清理。

如果您重複調用SOAP函數會發生什麼?它是否繼續每次增長3或定居下來?如果它繼續增長,你就有事情要做。如果不是,它的低級功能和(可能)不是你的問題。密切留意記憶,看看它是否會隨着時間流逝(特別是當你敲擊它時)。

+0

線程數(第二次調用後)每增加一個請求減2,關於內存泄漏:我不確定它是否泄漏,我會在一兩天內知道。 – ComputerSaysNo 2011-03-21 22:36:18

+0

使用'perfmon'來查明它是否泄漏任何東西 – ethrbunny 2011-03-22 20:07:51

+0

你能提供一個鏈接嗎? – ComputerSaysNo 2011-03-24 09:10:15