Обработка события 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); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д