首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C#中跟踪子进程的生命周期

在C#中跟踪子进程的生命周期
EN

Stack Overflow用户
提问于 2010-12-01 15:40:18
回答 2查看 777关注 0票数 0

我们工作的一部分是与ERP系统接口。通过调用ERP系统基目录中名为IMPAUT.exe的特定可执行文件,可以自动执行该系统中的某些流程。我将ERP子程序ID传递给IMPAUT,它就启动了。

现在,IMPAUT所做的是确定ERP安装是客户端安装还是独立安装,然后IMPAUT启动子进程。此子进程为IMPACT.exe或IMPCSC.exe。一旦IMPAUT启动子进程,IMPAUT就会终止。子进程会继续存在一段时间。子进程只有在完成命令并从ERP系统注销时才会终止。

问题是,当子进程仍然处于活动状态时,我不能再次调用IMPAUT,因为可能只有一个子程序实例登录到ERP系统。我也不能监控IMPAUT什么时候死,因为子进程在IMPAUT死后很长一段时间仍然活着。

我需要确定调用它的特定IMPAUT进程的子进程何时死亡。因此,在父进程终止之前,我需要获取它调用的子进程,并监控子进程的生命周期。

EN

回答 2

Stack Overflow用户

发布于 2010-12-01 15:48:31

我猜您需要使用System diagnostics名称空间中的Process.GetProcessesByName()来查找进程,并检查退出代码属性是否仍在运行。

如果ERP系统使用退出代码工作正常,那么您还可以检查某些东西是否工作/失败。

如果名称不是唯一的,请查看Process.MainModule和Process.Module属性,并对所有进程使用Process.GetProcesses。

票数 1
EN

Stack Overflow用户

发布于 2010-12-01 15:48:15

下面的代码可能会有所帮助

代码语言:javascript
运行
复制
AppDomain.CurrentDomain.DomainUnload += new EventHandler(CurrentDomain_DomainUnload);

void CurrentDomain_DomainUnload(object sender, EventArgs e)
    {
        // Here you can write to some file about te status 

    }

代码语言:javascript
运行
复制
 Process.GetCurrentProcess().Exited event
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4322180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档