Ich arbeite in C# 4.0 (Winforms) und debugge eine Anwendung mit 10+ Threads. Während des Debuggens gibt es ein Dropdown-Menü, um auszuwählen, welcher Thread ich debuggen sollte (nur während eines Haltepunkts zugänglich).
Diese werden als "Win32-Thread", "Worker-Thread", "RPC-Callback-Thread", usw. angezeigt.
Ich würde sie gerne in meinem Code benennen. Ich führe alle meine Threads über Hintergrundarbeiter aus.
Bearbeiten: meine Lösung. Sie funktioniert vielleicht nicht immer zu 100%, aber sie tut genau das, was sie soll. Wenn die Bezeichnungen in einigen Fällen falsch sind, ist das in dem Kontext, mit dem ich arbeite, in Ordnung.
Bei jedem *_dowork-Ereignis eines Hintergrundarbeiters füge ich die folgende Codezeile ein:
ReportData.TrySetCurrentThreadName(String.Format("{0}.{1}", MethodBase.GetCurrentMethod().DeclaringType, MethodBase.GetCurrentMethod().Name));
Das ist...
public static void TrySetCurrentThreadName(String threadName)
{
if (System.Threading.Thread.CurrentThread.Name == null)
{
System.Threading.Thread.CurrentThread.Name = threadName;
}
}