我有一个控制台应用程序,调用其他控制台应用程序。
我使用以下链接进行操作:https://robindotnet.wordpress.com/2010/03/21/how-to-pass-arguments-to-an-offline-clickonce-application/
我无法实例化进程并使用它,因为我得到了错误消息“指定的可执行文件不是此OS平台的有效应用程序”。
我可以使用进程的静态版本调用应用程序。
Process.Start(shortcutPath, arguments);
或
Process.Start(shortcutPath, arguments).WaitForExit();
然而,我无法将这个过程转到WaitForExit --一个应用程序被调用,过了一段时间,第一个应用程序完成之前,第二个应用程序被调用--这是一个问题,因为它依赖于第一个应用程序来完成。
关于如何获得进程的静态版本以等待退出(alt )的任何建议。如何实例化进程并能够调用clickonce部署的应用程序?)
发布于 2016-04-10 08:06:40
Process.Start方法(String, 字符串)的返回值为System.Diagnostics.Process
根据https://msdn.microsoft.com/en-us/library/h6ak8zt5%28v=vs.110%29.aspx的说法是:
与进程资源关联的新进程,如果没有启动进程资源,则为null。请注意,与已在运行的同一进程实例一起启动的新进程将独立于其他进程。此外,Start可能返回一个非空进程,其HasExited属性已设置为true。在这种情况下,已启动的进程可能已经激活了自身的一个现有实例,然后退出。
因此,在调用process.HasExited之前,我将检查WaitForExit是否为真。
var process = Process.Start(shortcutPath, arguments);
if (process != null && process.HasExited != true)
{
process.WaitForExit();
}
else
{
// Process is null or have exited
}
https://stackoverflow.com/questions/36526954
复制相似问题