Приостановка основного процесса в C # - PullRequest
1 голос
/ 15 февраля 2012

Я занимаюсь разработкой приложения на C #.Как часть состояния ошибки, я хотел бы вызвать файл в Блокноте для редактирования пользователем (при приостановке основного процесса).Я могу поднять файл с помощью Process.Start.Я не могу понять, как приостановить основное приложение, пока пользователь не сохранит или не выйдет из файла блокнота.Есть ли что-то кроме Process.start, которое я мог бы использовать, чтобы запустить Notepad.exe в основном процессе, или какой-то другой прием, который я могу использовать.Я чувствую, что есть простое решение, которое я пропускаю.Заранее спасибо.

Ответы [ 2 ]

5 голосов
/ 15 февраля 2012

Вы можете использовать Process.WaitForExit , чтобы заблокировать основную программу, пока Блокнот не будет закрыт.

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

Один из вариантов здесь - иметь ManualResetEvent и ждать его. Затем вы могли бы прослушать Process.Exited (после установки Process.EnableRaisingEvents ) и использовать это для вызова Set () в дескрипторе ожидания. Это позволит обработать ваш код при выходе из процесса.

Для обработки сохраняемого файла отдельный FileSystemWatcher может наблюдать за сохранением (изменением файла) самого файла. Если файл сохраняет / изменяет, вы можете продолжить, вызвав Set ().

0 голосов
/ 15 февраля 2012

Я считаю, что вы должны быть в состоянии сделать что-то подобное.

var notePad = new Process { StartInfo = { FileName = "notepad.exe", Arguments = "newfile.txt" } };
        notePad.Start();

        while(!notePad.HasExited)
        {

        }

        MessageBox.Show("Done.");

"Готово".окно сообщения не должно отображаться, пока вы не закроете блокнот.Опять же, ответ выше моего менее хакерский.

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