C#进程启动-如何强制执行WaitForExit
本文关键字:强制执行 WaitForExit 进程 启动 | 更新日期: 2024-07-23 04:08:16
我有一个控制台应用程序,它可以调用其他控制台应用程序。
我使用以下链接进行操作:https://robindotnet.wordpress.com/2010/03/21/how-to-pass-arguments-to-an-offline-clickonce-application/
我无法实例化进程并使用它,因为我收到错误消息"指定的可执行文件不是这个操作系统平台的有效应用程序"
我可以使用静态版本的Process调用应用程序,例如
Process.Start(shortcutPath, arguments);
或
Process.Start(shortcutPath, arguments).WaitForExit();
然而,我无法将流程转到WaitForExit——调用一个应用程序,过一段时间,在第一个应用程序完成之前,调用第二个应用程序——这是一个问题,因为它取决于要完成的第一个应用。
关于如何让静态版本的进程等待退出(或者如何实例化进程并能够调用clickonce部署的应用程序?)
Process.Start方法(字符串,字符串)的返回值为System.Diagnostics.Process
根据https://msdn.microsoft.com/en-us/library/h6ak8zt5%28v=vs.110%29.aspx是:
与进程资源关联的新进程,如果没有启动进程资源,则为null。请注意,与同一进程的已运行实例一起启动的新进程将独立于其他进程。此外,Start可能会返回一个非null进程,其HasExited属性已设置为true。在这种情况下,启动的进程可能已经激活了自身的现有实例,然后退出。
所以我会检查流程是否正确。调用WaitForExit 之前HasExited为true
var process = Process.Start(shortcutPath, arguments);
if (process != null && process.HasExited != true)
{
process.WaitForExit();
}
else
{
// Process is null or have exited
}
好吧,在一天的大部分时间里,我的头撞在墙上,我发现了这个。。。启动离线ClickOnce应用程序并等待退出
使用了互斥锁选项。该死的微软,你拿走了一些过去非常简单的东西,并把它变成了一匹真正的马
我正要废弃我所谓的exe,创建一个怪物——一想到就觉得不舒服。