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

标签 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

最佳答案

如果 ReSharper 测试运行程序进程仍然存在,则将调试器附加到它并“全部中断”以查看当前正在执行的线程。

将 Visual Studio 调试器附加到进程

下面显示了如何将 VS 调试器附加到正在运行的进程。在选择附加哪个进程时也选择 ReSharper 测试运行器。

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

打破一切

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

Menu -> Debug -> Break All

查看话题

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

Menu -> Debug -> Windows -> Threads

有关“线程”窗口的更多详细信息:

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

关于c# - 完成测试后如何追踪仍在工作的线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4816220/

相关文章:

c# - 在测试项目中找不到项目类/方法

c# - 单元测试。关于独立测试

build - 如何弥补开发机和构建服务器之间的环境差异?

c# - 在构建器模式中管理顺序的首选方法是什么?

C# 等效于另一个进程的postthreadmessage

c# - 如何在 asp.net 中的卸载事件之前分配值

c# - AssemblyInfo 内部版本号未更新

c# - 使用 nunit-console 运行单独的参数化测试用例

C# DI Func工厂无需注册Func?

c# - C# 中的 return _ 是什么