2016-02-20 25 views
1

我使用特定的工具來檢查我的應用程序。一旦應用程序命中一個斷點,我可以通過調用某個函數從立即窗口調用我的工具。該工具本身是一個多線程的Windows應用程序,因此產生了一些任務。Visual Studio立即窗口派生任務和線程阻塞問題

我面臨的問題是,有時從該工具計劃的某些任務永遠不會運行,這會導致我的工具無限期掛起。我用ThreadPool.QueueUserWorkItemTask.Run產生任務,它們都會導致該工具掛起並且從不執​​行這些任務。如果我使用Thread類,則該工具完美工作。

此外,該工具可以正常工作(帶任務),即不從即時窗口啓動。因此,只有在使用「任務」和「立即」窗口時纔會出現問題。

因此,我的問題是什麼可能是一些任務永遠不會執行的原因?據我所知,立即窗口阻塞所有其他線程,並執行該命令的線程上的命中斷點,但立即窗口線程產生的線程/任務仍應該執行,對吧?

我的應用程序和工具都在C#中。 我正在使用Visual Studio Professional 2015更新1.

+0

我想我讀了即時窗口以非常有創意的方式控制執行。線程正在停止。有些微軟博客上有一篇文章。 – usr

+0

你能指點我那個博客嗎?我找不到像這樣的東西。 –

+0

我沒有找到它。 – usr

回答

-1

與分步調試相比,立即窗口一次只執行一個線程 - 主線程或當前線程。它無法調用新線程或任務。因此你的工具會卡住。

+0

這不完全正確。正如我上面所描述的,它在產生新線程時工作得很好,但是調度任務可能會阻塞。 –