确定线程或Appdomain的子进程

时间:2009-11-24 15:17:17

标签: .net multithreading appdomain

我正在使用第三方程序集进行一些处理,它会产生2个子进程来执行某些工作。我在一个单独的线程中运行它。

如果运行时间过长,我希望能够取消处理 - 我的问题是,如果我中止线程,则生成的进程仍在运行。

有没有办法确定特定线程产生的进程,以便我可以杀死它们?

我可以在一个单独的Appdomain中执行这项工作,如果这对任何人都有帮助 - 有没有办法确定在特定的Appdomain中生成了哪些进程?

备注

  • 我无法从第三方程序集中获取进程ID
  • 我不能简单地杀死所有匹配名称的进程,因为我将同时运行这些工作线程中的一些(如果运行时间过长,我只想杀死该线程中生成的进程)
  • 我知道杀死这些进程对我来说是“安全的”

2 个答案:

答案 0 :(得分:1)

如果第三方程序集没有为您提供回调或某种方式来确定某个进程是否使用给定的PID生成,以便您可以跟踪它们,则无法确定是否已生成某个进程来自应用程序中的给定线程。最接近的是用于运行该过程的命令行。

答案 1 :(得分:0)

我想出了一个解决方法 - 当一个工作线程中止时,它产生的进程是“孤立的”(父进程ID不再是我的应用程序),所以我可以确定哪个进程要杀死。< / p>