Process.WaitForExit не возвращается с ALT + F4 - PullRequest
0 голосов
/ 14 февраля 2019

Я пишу приложение запуска WPF для нескольких небольших проектов Unity3D и Unreal, которое считывает код выхода из приложения-концентратора (также Unity) для запуска других проектов в зависимости от полученного кода выхода.

К сожалению, некоторые изв этих маленьких проектах не реализован «чистый выход», и их необходимо уничтожить с помощью ALT+F4, что, в свою очередь, по какой-то причине не зарегистрировано моим приложением для запуска.

Часть кода выхода неактуально для проблемных проектов. Я использую только коды выхода для приложения-концентратора.Запуск их из приложения-концентратора работает просто отлично, и если у них есть какие-то средства выхода, мой лаунчер работает как чудо.

Я использую WaitForExit без тайм-аута, потому что приложения работают бесконечно, если пользователь не выходит.

private static Process currentRunningProcess;

public static void StartApp(string applicationPath)
{
    if (currentRunningProcess != null) return;
    currentRunningProcess = new Process
    {
        StartInfo = new ProcessStartInfo(applicationPath)
    };
    currentRunningProcess.Start();
}

//this function is used both for the hub app and for the little projects to
//avoid having two functions that basically do the same
//the exit code is only used for the hub app and ignored for anything else
public static int GetExitCode()
{
    currentRunningProcess.WaitForExit();
    var exitCode =  currentRunningProcess.ExitCode;
    currentRunningProcess = null;
    return exitCode;
}

Я что-то упустил или это должно работать таким образом?Если второй случай верен, как я могу улучшить мою реализацию, чтобы также зарегистрировать ALT+F4 ed приложений?

(Реализация чистого выхода для небольших проектов, к сожалению, невозможна, так как некоторые из них являются коммитами от третьегосторонние провайдеры, где у меня нет доступного исходного кода)

1 Ответ

0 голосов
/ 14 февраля 2019

Хорошо, так получается, что проблема в приложениях движка Unreal, которые я запускаю с помощью своей программы запуска.По какой-то причине Unreal запускает два процесса, и Alt+F4 влияет только на второй.

Поскольку исходный процесс никогда не закрывается, мой модуль запуска не может определить его закрытие.

Спасибо @Damien_The_Unbeliever за указание на диспетчер задач.Я не знаю, почему я не проверил, прежде чем я разместил здесь.

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