Обработка события 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);
}