有没有办法检查是否有任何“用户”线程正在运行。我想将其放入 [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/