我们在应用程序中有以下功能:
public static Process StartApp(string fileName, bool waitForProcessExit)
{
Process proc = new Process
{
StartInfo =
{
FileName = fileName,
UseShellExecute = true,
WindowStyle = ProcessWindowStyle.Normal,
ErrorDialog = false
}
};
bool processStarted = proc.Start();
if (!processStarted)
{
int errorCode = Marshal.GetLastWin32Error();
if (errorCode == 0)
{
throw new Exception("Unknown Error!");
}
throw new Win32Exception(errorCode);
}
if (waitForProcessExit)
{
proc.WaitForExit();
}
return proc;
}
执行此功能时,变量processStarted
在某些情况下包含false
。这发生在例如打开Microsoft Word文件并且Word已在运行(Excel也是如此)。使用.jpg文件作为参数时,结果是相同的:Process.Start
返回false。
当参数waitForProcessExit
为真时,我们的应用程序需要阻塞。
我们如何实现这一目标?