Я делаю приложение формы, которое также запускает консольный процесс в другом потоке. Обычно мне нужно разблокировать кнопку после выхода из приложения. Раньше я делал обработчик событий, процесс после завершения просто останавливался, но теперь, после события, само приложение уничтожается.
Вот код для запуска процесса:
public void CallConsole()//This Calls the console application
{
Thread.CurrentThread.IsBackground = true;
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.FileName = filename;
if (checkBox1.Checked)
p.StartInfo.CreateNoWindow = true;
p.EnableRaisingEvents = true;
p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);
p.ErrorDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);
p.Exited += new EventHandler(p_Exited);
p.Disposed += new EventHandler(p_Exited);
p.Start();
p.BeginErrorReadLine();
p.BeginOutputReadLine();
}
Я пытался работать со свойством Thread.IsBackground, но это ничего не изменило
Вот сам обработчик события:
void p_Exited(object sender, EventArgs e)//Process on exit or disposed will make button1 avalable
{
button1.Enabled = true;
}
Есть идеи, почему приложение после добавления
p.EnableRaisingEvents = true;
теперь убит, а не только процесс?