如何在完成测试后追踪仍在工作的线程?

时间:2011-01-27 12:21:43

标签: c# nunit

我正在使用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

1 个答案:

答案 0 :(得分:3)

如果ReSharper测试运行程序仍在那里,那么将调试器附加到它并且"中断所有"查看当前正在执行的线程。

附加Visual Studio调试程序以处理

以下显示如何将VS调试器附加到正在运行的进程。选择要附加的进程时,请选择ReSharper测试运行器。

http://msdn.microsoft.com/en-us/library/c6wf8e4z.aspx

全部中断

选择此选项将暂停所有正在运行的线程并允许您检查它们。

  

菜单 - >调试 - >全部打破

查看主题

"线程"窗口为您提供正在调试的当前进程的所有线程的列表。

  

菜单 - >调试 - > Windows - >线程

关于"线程&#34的更多细节;窗口:

http://msdn.microsoft.com/en-us/library/w15yf86f.aspx