如何自杀一个控制台应用程序?

时间:2013-03-18 21:20:46

标签: .net windows c#-4.0 process

我有一个控制台应用程序,可以创建/启动其他子进程。我需要以某种方式检查自己或他的ProcessChilds是否陷入死锁,并杀死相关进程树中最年轻的。

有了这个目标,他的进程子节点可能具有相同的“递归”算法。

这个想法不是杀死最年轻的过程,而是让最年轻的人通过命令自杀(在某种程度上说)。

有没有办法可以在进程中调用异步方法(也许是他孩子应该存在的方法)?

当然,我可以使用该文件的持久性文件和“WatchDog / KeepAliveLook”,当它不再存在时,它们就会这样做(自杀),但我确信有更简洁的方法可以做到这一点。

2 个答案:

答案 0 :(得分:2)

我会使用一些进程间通信的方法(远程处理,WCF,命名管道,窗口事件,DDE等)来发送通知“吃毒丸”。更大的问题是你为什么这样设计?听起来有点陈旧和过时的建筑。

答案 1 :(得分:0)

如果某个进程完全陷入僵局,那么您就无法使用其任何线程。您需要(外部)在流程中创建一个新线程,这只能通过Windows'调试API。

如果你想杀死一个子进程,为什么不直接杀死它而不是让它自杀呢?