是否可以在Visual Studio调试器中命名一个线程?

gre*_*b64 7 c# ide debugging visual-studio winforms

我正在使用C#4.0(winforms),调试具有10+个线程的应用程序.在调试时,有一个下拉列表来选择我应该调试哪个线程(只能在断点期间访问).

这些显示为"Win32线程","工作线程","RPC回调线程"等...

我喜欢在我的代码中命名它们.我正通过后台工作人员运行我的所有线程.

编辑:我的解决方案.这可能无法在100%的时间内起作用,但它确实能够满足需要.如果标签在某些情况下是错误的,那就可以在我正在使用的上下文中找到.

在每个backgroundworker的*_dowork事件中,我将以下代码行放入:

ReportData.TrySetCurrentThreadName(String.Format("{0}.{1}", MethodBase.GetCurrentMethod().DeclaringType, MethodBase.GetCurrentMethod().Name));
Run Code Online (Sandbox Code Playgroud)

哪个是......

  public static void TrySetCurrentThreadName(String threadName)
  {
     if (System.Threading.Thread.CurrentThread.Name == null)
     {
        System.Threading.Thread.CurrentThread.Name = threadName;
     }
  }
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 9

那么你可以使用Thread.Name属性,但是你只能写一次 - 所以当你创建线程时,给它一个合适的名字.