Когда Process.WaitForExit () не ждет - PullRequest
1 голос
/ 24 марта 2020

Иногда Process.WaitForExit () явно не ждет. Возьмите следующий C# фрагмент кода (который работает с повышенными правами):

            // Prepare the process to run
            ProcessStartInfo start = new ProcessStartInfo();
            start.FileName = @"C:\WINDOWS\system32\mmc.exe"; // WaitForExit does not wait
            start.FileName = @"C:\WINDOWS\system32\notepad.exe"; // WaitForExit waits
            start.FileName = @"C:\WINDOWS\system32\regedit.exe"; // WaitForExit waits
            start.UseShellExecute = false;

            // Fire off the process
            var process = Process.Start(start);

            int exitCode = 0;
            process.WaitForExit();
            exitCode = process.ExitCode;

Конечно, только один из параметров start.Filename будет присутствовать одновременно. (Остальные только что прокомментировали.)

Когда присутствует только mm c .exe, Process.WaitForExit () не ждет. Когда вместо них присутствуют другие два, Process.WaitForExit () ожидает.

Итак, два вопроса. Почему Process.WaitForExit () не ожидает mm c .exe, и есть ли способ заставить его ждать? (FWIW, определяющий start.CreateNoWindow = true, не имеет значения.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...