我将 NUnit 与 Resharper 结合使用。当我完成一项测试时,JetBrain:Resharper 进程仍在工作,当我写出它的线程时,仍有一些线程在工作。我可以追踪它是什么类型的线程吗?我目前正在使用以下代码,但它只提供了线程 ID。我需要线程名称。
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 测试运行器。
http://msdn.microsoft.com/en-us/library/c6wf8e4z.aspx
打破一切
选择此选项将暂停所有正在运行的线程并允许您检查它们。
Menu -> Debug -> Break All
查看话题
“线程”窗口为您提供当前正在调试的进程的所有线程列表。
Menu -> Debug -> Windows -> Threads
有关“线程”窗口的更多详细信息:
关于c# - 完成测试后如何追踪仍在工作的线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4816220/