我正在编写一段c#代码,用于启动安装程序并在继续使用其他内容之前等待它返回.
我遇到某些安装程序出现问题,这些安装程序在安装实际完成之前返回原始进程的其他进程.有什么方法可以等到所有流程完成后?
为了澄清这里我遇到麻烦的情况:
>启动Installer1
> Installer1生成/启动另一个安装程序(Installer2)
>安装程序1返回
>应用程序认为安装已完成但Installer2仍在运行.这会导致应用程序中的工作流问题.
这是我目前正在使用的代码:
// launch installer Process process = windowsApplicationLauncher.LaunchApplication(_localFilePath); // wait for process to return do { if (!process.HasExited) { } } while (!process.WaitForExit(1000)); if (process.ExitCode == 0) { _fileService.MoveFile(_localFilePath,_postInstallFilePath); _notification.SetComplete(false); return true; } return false;
解决方法
您是否考虑过使用WMI来解决这个问题?
您可以使用WMI侦听进程创建和删除事件.问题967668有一个很好的例子.
当您收到进程创建事件时,您可以发出WMI查询以确定该进程是否是您的根安装程序的子进程(或子进程的子进程),具有以下内容:
“SELECT * FROM Win32_Process WHERE ParentProcessId =”.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。