问题:如何确定子进程树中的所有进程以杀死它们?
我有一个用 C# 编写的应用程序,它将:
- 从服务器获取一组数据,
- 生成一个 3rd 方实用程序来处理数据,然后
- 将结果返回给服务器。
这工作正常。但是由于运行会消耗大量CPU 并且可能需要长达一个小时,我想添加让我的应用程序终止其子进程的功能。
使我在其他地方找到的简单解决方案的一些问题是:
- 我的应用程序的子进程“A”(我认为是 InstallAnywhere EXE)产生了真正的处理应用程序“B”(一个java.exe),这反过来又产生了更多的子进程“C1”..“Cn”(其中大部分也是用爪哇)。
- 在同一台机器上可能会运行我的应用程序的多个副本(因此,它的多个子集)。
- 子进程不在我的控制范围内,因此将来可能会有一些“D”进程。
- 我的应用程序必须在 32 位和64 位版本的 MSWindows 上运行。
从好的方面来说,没有数据丢失的问题,只要进程很快结束,“干净”的关闭就没有关系。