我正在使用C#4.0(winforms),调试一个包含10个以上线程的应用程序。在调试时,有一个下拉列表来选择我应该调试哪个线程(只能在断点期间访问)。
这些显示为“Win32 Thread”,“Worker Thread”,“RPC Callback Thread”等......
我很乐意在我的代码中命名它们。我正通过后台工作人员运行我的所有线程。
编辑:我的解决方案。这可能无法在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;
}
}
答案 0 :(得分:9)
你可以使用Thread.Name属性,但是你只能写一次 - 所以当你创建线程时,给它一个合适的名字。
答案 1 :(得分:1)
Thread.CurrentThread.Name = "Give your name here";