Обработка события Process.Exited - C#
Формулировка задачи:
Здравствуйте.
Имеется код:
И всё работает как надо кроме обработчика события Exited. После закрытия блокнота, файл не удаляется и сообщение не выводится. Однако, в режиме отладки, после закрытия блокнота, при попытке получить информацию о переменной proc, сообщение вдруг появляется и файл вдруг удаляется.
Как это исправить и почему так происходит?
Листинг программы
- // файл создадим в "Моих Документах"
- String file = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\out.txt";
- String output = "";
- using (StringWriter writer = new StringWriter()) {
- // Переназначаем выходной поток консоли
- // Теперь консоль пишет в строку
- Console.SetOut(writer);
- Console.WriteLine("Это и следующее сообщение выводятся в выходной поток консоли.");
- Console.WriteLine("Мы можем назначить другой поток.");
- output = writer.ToString();
- }
- // Записываем строку в файл и открываем его в "Блокноте"
- File.WriteAllText(file, output);
- ProcessStartInfo procInfo = new ProcessStartInfo {
- FileName = "notepad",
- Arguments = file,
- UseShellExecute = false
- };
- //
- Process proc = new Process();
- proc.EnableRaisingEvents = true;
- proc.StartInfo = procInfo;
- // Действия после завершения процесса
- // Проблема ТУТ
- proc.Exited += (sender, ea) =>
- {
- System.Windows.Forms.MessageBox.Show("Процесс завершён.");
- File.Delete(file);
- };
- proc.Start();
Решение задачи: «Обработка события Process.Exited»
textual
Листинг программы
- bool contin=false;
- proc.Exited += (sender, ea) =>
- {
- System.Windows.Forms.MessageBox.Show("Процесс завершён.");
- File.Delete(file);
- contin=true;
- };
- proc.Start();
- while (!contin)
- {
- Thread.Sleep(100);
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д