我们工作的一部分是与ERP系统接口。通过调用ERP系统基目录中名为IMPAUT.exe的特定可执行文件,可以自动执行该系统中的某些流程。我将ERP子程序ID传递给IMPAUT,它就启动了。
现在,IMPAUT所做的是确定ERP安装是客户端安装还是独立安装,然后IMPAUT启动子进程。此子进程为IMPACT.exe或IMPCSC.exe。一旦IMPAUT启动子进程,IMPAUT就会终止。子进程会继续存在一段时间。子进程只有在完成命令并从ERP系统注销时才会终止。
问题是,当子进程仍然处于活动状态时,我不能再次调用IMPAUT,因为可能只有一个子程序实例登录到ERP系统。我也不能监控IMPAUT什么时候死,因为子进程在IMPAUT死后很长一段时间仍然活着。
我需要确定调用它的特定IMPAUT进程的子进程何时死亡。因此,在父进程终止之前,我需要获取它调用的子进程,并监控子进程的生命周期。
发布于 2010-12-01 15:48:31
我猜您需要使用System diagnostics名称空间中的Process.GetProcessesByName()来查找进程,并检查退出代码属性是否仍在运行。
如果ERP系统使用退出代码工作正常,那么您还可以检查某些东西是否工作/失败。
如果名称不是唯一的,请查看Process.MainModule和Process.Module属性,并对所有进程使用Process.GetProcesses。
发布于 2010-12-01 15:48:15
下面的代码可能会有所帮助
AppDomain.CurrentDomain.DomainUnload += new EventHandler(CurrentDomain_DomainUnload);
void CurrentDomain_DomainUnload(object sender, EventArgs e)
{
// Here you can write to some file about te status
}或
Process.GetCurrentProcess().Exited eventhttps://stackoverflow.com/questions/4322180
复制相似问题