我有一个 ASP.NET Core 2.2 应用程序。当我通过操作系统类型调用以下测试方法(通过Chrome浏览器)时,将打开一个新的Chrome浏览器隐身实例。
在Windows和Linux(在Virtual Box中运行)中,process.WaitForExit()
正在等待关闭隐身 Chrome浏览器。
但是,在Mac OS X(在Virtual Box中运行)中,process.WaitForExit()
没有等待。它会在process.Start()
之后立即调用。
如何确保进程正在等待浏览器关闭?
public IActionResult Test()
{
string fileName = "";
string arguments = "";
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
fileName = @"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe";
arguments = @"-incognito --user-data-dir=""C:\Users\bala_sakthis\AppData\Local\Temp\ChromeData"" data:,";
}
else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
fileName = "google-chrome";
arguments = @"-incognito --user-data-dir=""/home/osboxes/ChromeData"" data:,";
}
else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
{
fileName = "open";
arguments = @"-a ""Google Chrome"" -n --args --incognito --user-data-dir=""/Users/bala/ChromeData"" data:,";
}
var process = new Process();
process.StartInfo.UseShellExecute = false;
process.StartInfo.FileName = fileName;
process.StartInfo.Arguments = arguments;
using (process)
{
try
{
process.Start();
process.WaitForExit();
Console.WriteLine("Process exited...");
Console.WriteLine(process.HasExited);
}
catch (Exception exp)
{
Console.WriteLine(exp);
}
}
return new OkResult();
}