我正在C#4.0(winforms)中工作,用10多個線程調試應用程序。在調試時,有一個下拉選擇我應該調試的線程(只能在斷點處訪問)。是否可以在Visual Studio調試器中命名一個線程?
這些顯示爲「Win32的主題」,「工作線程」,「RPC回調線程」,等等
我很想從我的代碼中爲它們命名。我通過後臺工作人員運行我的所有線程。
編輯:我的解決方案。這可能無法100%的時間,但它確實需要它。如果標籤在某些情況下是錯誤的,那在我正在處理的上下文中可以。
在每一次的BackgroundWorker的* _dowork事件,我把下面的一行代碼:
ReportData.TrySetCurrentThreadName(String.Format("{0}.{1}", MethodBase.GetCurrentMethod().DeclaringType, MethodBase.GetCurrentMethod().Name));
這是...
public static void TrySetCurrentThreadName(String threadName)
{
if (System.Threading.Thread.CurrentThread.Name == null)
{
System.Threading.Thread.CurrentThread.Name = threadName;
}
}
Windows中的API ['CreateThread'](http://msdn.microsoft.com/en-us/library/ms682453.aspx)不允許使用名稱。我假設.NET中的名稱只是佔位符?如果他們是,他們可能已被讀/寫(儘管我不能想到重命名線程的用例)。 – Abel
由於我使用BackgroundWorkers來運行所有多線程,這是一個安全的操作嗎?我會假設它可能會根據需要重新使用線程,所以只命名一次可能是不可接受的。 – greggorob64
@Abel:.NET線程並不一定是WinAPI線程周圍的精簡包裝。 – Vlad