C# 我如何跟踪完成测试后仍在工作的线程?
我正在使用NUnit和Resharper。当我完成一个测试时,JetBrain:Resharper进程仍在工作,当我写出它的线程时,仍有一些线程在工作。我可以追踪它是什么类型的线程吗?我目前正在使用以下代码,但它只给我线程ID。我需要线程名称C# 我如何跟踪完成测试后仍在工作的线程?,c#,nunit,C#,Nunit,我正在使用NUnit和Resharper。当我完成一个测试时,JetBrain:Resharper进程仍在工作,当我写出它的线程时,仍有一些线程在工作。我可以追踪它是什么类型的线程吗?我目前正在使用以下代码,但它只给我线程ID。我需要线程名称 Process[] allProcs = Process.GetProcesses(); foreach (Process proc in allProcs) { if (proc.ProcessName.StartsWith("Jet"))
Process[] allProcs = Process.GetProcesses();
foreach (Process proc in allProcs)
{
if (proc.ProcessName.StartsWith("Jet"))
{
ProcessThreadCollection myThreads = proc.Threads;
Console.WriteLine("process: {0}, id: {1}", proc.ProcessName, proc.Id);
foreach (ProcessThread pt in myThreads)
{
Console.WriteLine(" thread: {0}", pt.Id);
Console.WriteLine(" started: {0}", pt.StartTime.ToString());
Console.WriteLine(" CPU time: {0}", pt.TotalProcessorTime);
Console.WriteLine(" priority: {0}", pt.BasePriority);
Console.WriteLine(" thread state: {0}", pt.ThreadState.ToString());
}
}
}
上述代码的输出:
process: JetBrains.ReSharper.TaskRunner.MSIL, id: 1884
thread: 3600
started: 27.1.2011 13.26.55
CPU time: 00:00:05.8812377
priority: 8
thread state: Running
如果ReSharper测试运行程序进程仍然存在,那么将调试器附加到它并“全部中断”以查看当前正在执行的线程 将Visual Studio调试器附加到进程 下面显示如何将VS调试器附加到正在运行的进程。选择要附加的进程时,请选择ReSharper测试运行程序 全部中断 选择此选项将挂起所有正在运行的线程,并允许您检查它们 菜单->调试->全部中断 查看线程 “线程”窗口为您提供当前正在调试的进程的所有线程的列表 菜单->调试->窗口->线程 有关“线程”窗口的更多详细信息:
您能否更具体地说明如何在VS2010中执行此操作?@Simon没问题,您需要更多关于哪些方面的详细信息,例如,您是否愿意将调试器附加到进程?@chibacity:我不知道如何将调试器附加到进程,以及“全部中断”是什么意思。@Simon没问题,但首先,是什么让你认为你有一个“NUnit线程”的问题?您所看到的细节可以使诊断变得更容易。我认为有一些线程,可能不是来自NUnit或Reformer,而是来自我的代码(一些计时器、事件、线程),即使所有事情都已处理完毕,测试也已完成,这些线程仍挂起。而重拾器进程仍在内存中。