process.WaitForExit()在Mac OS X中不等待-ASP.NET Core 2.2

时间:2019-04-11 18:46:48

标签: macos asp.net-core-2.2

我有一个 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();
    }

0 个答案:

没有答案