Как проверить, что процесс завершен в WCF c# - PullRequest
1 голос
/ 21 января 2020

У меня есть служба отдыха WCF, и внутри я выполняю процесс:

        ProcessStartInfo startInfo = new ProcessStartInfo();
        startInfo.FileName = "cmd.exe";
        startInfo.Arguments = "/C " + Properties.Resources.NAME_APP_IAL + " " + ...);
        startInfo.WorkingDirectory = HttpContext.Current.Server.MapPath(@"" + ...);
        startInfo.CreateNoWindow = false;
        startInfo.UseShellExecute = false;
        Process oProcess = null;
        try
        {
            oProcess = Process.Start(startInfo);
            bool bStep = true;
            while (bStep)
            {
                Process[] oPro = Process.GetProcessesByName(Properties.Resources.NAME_APP_IAL);
                if (oPro == null || oPro.Count() == 0 ) bStep = false;
            }
        }

        catch (Win32Exception ex)
        {
            throw ..
        }

Процесс работает хорошо,

, но после его завершения я получаю файл как результат,

моя проблема в том, что процесс быстро завершается, и я получаю пустой файл! Так как я могу это исправить: чтобы быть уверенным, что процесс завершен или завершен вначале? Также с этим проверьте, если у меня есть исключение или процесс заблокирован или что-то еще, как я могу его распознать?

Спасибо за вашу помощь и за ваши предложения и советы,

1 Ответ

1 голос
/ 21 января 2020

Вам нужно использовать WaitForExit. См. Dotnetperls .

   using (Process exeProcess = Process.Start(startInfo))
   {
       exeProcess.WaitForExit();
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...