Предотвратить запуск программы Cra sh стороннего приложения? - PullRequest
1 голос
/ 05 мая 2020

У меня есть интерфейс, который генерирует входной файл для другой программы для расчета производительности насоса, а затем запускает эту программу и собирает выходные данные. Если входные данные не подходят для расчетов в сторонней программе, сторонняя программа будет сканировать sh и выдавать crypti c сообщения об ошибках, которые будут продолжать появляться независимо от того, сколько раз вы нажмете «ОК». ". Сторонняя программа - это просто файл .exe, который у меня есть, и у меня самого нет доступа к исходному коду.

Есть ли способ вызвать эту программу, но разрешить моему интерфейсу убить ее в случае сбоя? В настоящее время моя единственная работа - открыть диспетчер задач и вручную убить процесс.

Ниже мой фрагмент кода, который вызывает программу для запуска. "cpump.exe" - это сторонняя программа, о которой я говорю. Я понимаю, что он никогда не вернет False, поскольку программа зависает до этого момента в коде. Пожалуйста, извините за мое невежество / плохой стиль, я ни в коем случае не программист / разработчик, просто инженер-механик, пытающийся автоматизировать часть своей скучной работы!

        ProcessStartInfo start = new ProcessStartInfo();
        start.FileName = "c:\\cpump\\file\\cpump.exe";
        start.WindowStyle = ProcessWindowStyle.Hidden;
        start.UseShellExecute = false;
        start.WorkingDirectory = "c:\\cpump\\file\\";
        start.Arguments = "/k";
        start.CreateNoWindow = true;
        int exitCode;


        // Run the external process & wait for it to finish
        using (Process proc = Process.Start(start))
        {
            proc.WaitForExit();

            // Retrieve the app's exit code
            exitCode = proc.ExitCode;
        }

        if (exitCode == 0)
        {
            MessageBox.Show("Sucessful calculation complete.");
            return true;
        }
        else
        {
            return false;
        }

1 Ответ

0 голосов
/ 05 мая 2020

вам нужно поместить свой код в уловку попытки. вы также можете проверить эту аналогичную проблему LINK и рекомендуемое решение.

...