0

有时我们的客户有“幽灵”应用程序(这意味着当我们在很长一段时间后(比如 72 小时以上)关闭应用程序时,我们有时会在视觉上关闭但仍在进程列表中的应用程序。

由于我们无法轻松重现,我们想知道哪个线程仍在运行。所以我们想提供一个非常小的工具,我们可以在其中选择一个进程(选择一个“幽灵”),然后显示我们可以获得的所有信息(主要运行的线程名称)。

所以:

  1. 这可能吗 ?不知道ac#应用能否访问到另一个应用的线程名?
  2. 是否有任何现有的应用程序可以进行这种“提取”
  3. 我们应该使用什么来访问此类信息?
4

3 回答 3

2

您可以尝试进程资源管理器,这将显示正在运行的进程中线程的详细信息:

http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

进程资源管理器线程

于 2013-09-30T09:32:23.640 回答
2

正如 Justin Harvey 所说,Process explorer 是一个很好的解决方案。

如果您希望提供自己的工具,您可能会对以下方面感兴趣:

Process.GetProcessByName()Process.Threads

用法

var process = Process.GetProcessByName("myprocess").FirstOrDefault();
var threads = process.Threads;
于 2013-09-30T09:38:30.950 回答
1

虽然您可以像这样访问另一个进程的线程信息:

Process[] p = Process.GetProcessesByName("YourProcess");
foreach (ProcessThread thread in p[0].Threads)
{
    Console.WriteLine(thread.Id);
}

不能访问线程的名称,但可以检索ProcessThread类中可用的信息。

于 2013-09-30T09:38:39.800 回答