Я работаю в C # 4.0 (winforms), отлаживая приложение с 10+ потоками. Во время отладки есть раскрывающийся список, чтобы выбрать, какой поток я должен отлаживать (доступно только во время точки останова).
Они отображаются как «поток Win32», «рабочий поток», «поток обратного вызова RPC» и т. Д.
Я бы хотел назвать их в моем коде. Я запускаю все свои потоки через фоновых рабочих.
Edit: мое решение. Это может не работать в 100% случаев, но делает именно то, что нужно. Если в некоторых случаях метки неправильные, это нормально в контексте, с которым я работаю.
В каждом событии * _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;
}
}