私はフォームアプリケーションを作成しています。これは、別のスレッドでもコンソールプロセスを実行します。基本的には、アプリケーション終了後にボタンのブロックを解除する必要があります。イベントハンドラを作成する前に、完了後のプロセスは停止しましたが、今度はイベント後にアプリケーション自体が強制終了されます。ここでプロセス終了イベントに対するアプリケーション終了
は、プロセスの実行を行うためのコードです:
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;
は、プロセスだけでなく、現在殺されていますか?
@HansPassantありがとうございました! – TheBW