Принудительное завершение процесса при ошибке - PullRequest
1 голос
/ 25 августа 2010

Я пишу программу, которая может генерировать ошибки из-за использования LuaInterface и загрузки в редактируемые скрипты, это вызывает проблему, так как при ошибке не вызываются события «Application.Exit» или «Form.FormClosing». Поэтому я не могу гарантировать завершение процесса, который я запускаю в приложении.

Есть ли способ закрыть запущенный процесс, когда основной процесс завершается с ошибкой?

1 Ответ

1 голос
/ 25 августа 2010

Если процесс не завершается принудительно, например, убивая его из диспетчера задач или используя Environment.FailFast, вы должны иметь возможность сделать что-то подобное в вашем методе Main:

public static void Main(string[] args) {

    try {
        DoNormalStartupStuff();
    }
    finally {
        foreach (var process in _runningProcesses) {
            process.Kill();
        }
    }

}

Другим вариантом является информирование дочерних процессов об их идентификаторе родительского процесса, либо путем передачи идентификатора процесса из родительского процесса в дочерний процесс, либо делает что-то подобное . Затем дочерний процесс может отслеживать родительский процесс и, если он завершается, дочерний процесс может совершить самоубийство.

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