c# - 检查测试结束时是否还有任何线程残留

标签 c# .net multithreading

有没有办法检查是否有任何“用户”线程正在运行。我想将其放入 [TestCleanup] 方法中,如果测试未加入它启动的所有线程,则测试失败。

我认为仅仅列出所有当前正在运行的线程是没有帮助的,因为例如可能有垃圾收集线程在不确定的时间启动。所以我基本上想要的线程不仅仅与运行时相关。

最佳答案

我建议您查看一下 Microsoft.Diagnostics.Runtime 库 (Nuget)。特别是 CLR 功能。您可以使用以下代码获取带有堆栈跟踪的所有线程的列表

using (DataTarget target = DataTarget.AttachToProcess(Process.GetCurrentProcess().Id, 5000, AttachFlag.Passive))
{
    ClrRuntime runtime = target.ClrVersions.First().CreateRuntime();
    return new runtime.Threads;
}

关于c# - 检查测试结束时是否还有任何线程残留,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58584608/

相关文章:

c# - ServiceContractGenerator CodeDomProvider 编译错误

c# - 在 C# 中模拟无限滚动以获取页面的完整 html

C - 使用互斥锁时程序崩溃或不响应

c++ - boost scoped_lock。这个会锁吗?

c# - 从异步方法更新进度条

c++ - 列出线程 C++

c# - Web API 自主机 - 在所有网络接口(interface)上绑定(bind)

c# - C# 中是否有任何存储优化的稀疏矩阵实现?

C# - "destructors are not inherited"实际上是什么意思?

.net - 如何显示 ListViewItem 的整行突出显示?