簡體   English   中英

在C#中調試線程池

[英]Debug Threadpool in C#

我想在調試Visual C#時不更改代碼(程序已在運行)時觀察Threadpool,可以將代碼添加到監視中嗎? 也許我在調試時要求Threadpool.AvailableThreads方法。 我正在Visual Studio 2008中進行開發。

編輯:我剛剛發現在我的線程內(即在我放入線程池的方法中)執行了mysql查詢,它們占用了線程池。

我不清楚您到底想監視什么。 在VS中,線程窗口將顯示所有線程,並且通過在線程之間切換可以監視它們各自的調用堆棧。 如果需要其他詳細信息,則可能需要查看WinDbg,這將使您檢查其他詳細信息(盡管不如VS那樣容易)。

編輯:在評論中回答問題。 這是一種簡化,但是通常線程池管理着許多用於運行不同任務(例如QueueUserWorkItem)的線程。 除了線程池中的線程由線程池管理的事實外,線程池中沒有什么特別的。 這樣做的好處是可以重用線程。 創建新線程是一項昂貴的操作,因此通過重用線程可以分攤成本。

您的主線程不由線程池處理,使用Thread類創建的任何其他線程也不由線程池處理。

如果您無法中斷執行流程,則可以添加帶有條件和消息的跟蹤點 ,並在其中可以在輸出Windows中看到它的運行情況。 同樣,您可以添加調試跟蹤 /日志以查看結果。 單擊鏈接以查看更多詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM