【发布时间】:2013-09-30 09:27:16
【问题描述】:
有时我们的客户有“幽灵”应用程序(这意味着当我们在很长一段时间后(例如 72 小时以上)关闭应用程序时,我们有时会看到应用程序在视觉上关闭但仍在进程列表中。
由于我们无法轻松重现,我们想知道哪个线程仍在运行。所以我们想提供一个非常小的工具,我们可以在其中选择一个进程(选择一个“幽灵”),然后显示我们可以获得的所有信息(主要运行的线程名称)。
所以:
- 这可能吗?我不知道 C# 应用程序是否可以访问 另一个应用程序的线程名称?
- 是否有任何现有的应用程序可以进行这种“提取”
- 我们应该使用什么来访问此类信息?
【问题讨论】:
-
这是第三方应用程序吗? IE。一个你无法控制的?
-
一些,其他不是,例如我们已经发现有一次线程在处理一个队列满的套接字时被 Windows 阻塞了
-
不,我们开发了这个应用程序,但我们不想把这个工具放在应用程序中,因为:问题发生在我们关闭应用程序时,我们不想添加更多线程,我们想要一个诊断软件。
-
好的,我只是在想,对于您自己的应用程序,应该始终可以确保在 GUI(主)线程退出之前关闭所有后台线程。我们自己的应用程序遇到了这个问题,直到我确保所有后台线程都已正确关闭,即使出现异常也是如此。
-
@Surfbutler,是的,那将是最好的,但我们目前没有一个集中的“管理器”来了解我们正在使用的所有线程。
标签: c# .net multithreading process