我们会定期在无法重现的生产环境中关闭 Windows 服务。可能需要几个月的时间才能再次发生。
我正在进行一些诊断以尝试帮助解决该问题,我正在查看的一件事是在我们启动关闭应用程序后将事件添加到系统线程池 60 秒。我们的应用程序应该在最多 10 秒内完全关闭。
在这种情况下,我想将进程的剩余运行线程追踪到事件日志。
我可以使用 System.Diagnostics.Process.GetCurrentProcess.Threads 获取正在运行的线程。这些线程对象具有本机 Win32 线程 ID 等。
我想知道是否有任何方法可以从这些线程 ID 返回到它们在当前进程中代表的任何托管线程。我尝试这样做的原因是因为对于我们的线程池和我们生成的其他线程,我们给出了代表它们的目的的名称,这真的有助于取回这些名称。