gpt4 book ai didi

c# - 处理 ErrorDataReceived 时出现 NullReferenceException - 终止线程

转载 作者:太空宇宙 更新时间:2023-11-03 16:08:50 30 4
gpt4 key购买 nike

我正在尝试制作一个充当 Java 应用程序包装器的 C# 应用程序。

我试图实现的功能之一是将控制台输出重定向到我的程序,不幸的是,当我终止我的 Java 进程时,整个程序卡住。

代码如下:

private void button1_Click(object sender, EventArgs e)
{
String start = @"myjavaapp.jar";

var startInfo = new ProcessStartInfo("java", start);

startInfo.RedirectStandardInput = startInfo.RedirectStandardError = true;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;
Process ServerProc = new Process();
ServerProc.StartInfo = startInfo;
ServerProc.EnableRaisingEvents = true;
ServerProc.ErrorDataReceived += new DataReceivedEventHandler(ServerProc_ErrorDataReceived);
ServerProc.Exited += new EventHandler(ServerProc_Exited);

ServerProc.Start();
ServerProc.BeginErrorReadLine();
}

private void ServerProc_ErrorDataReceived(object sender, DataReceivedEventArgs e)
{
Invoke(new Action(() =>
{
if (e.Data.Contains("nastything"))
{
System.Windows.Forms.MessageBox.Show("Something nasty happened in console ");
}
f2.richTextBox1.AppendText(e.Data + "\n");
}));
}

我认为我的线程管理有问题 - 也许我还不明白。无论如何,在 Debug模式下 vs2012 返回一个 NullReferenceException

最佳答案

你可以只使用检查 if e.Data!=null 吗?

private void ServerProc_ErrorDataReceived(object sender, DataReceivedEventArgs e)
{
Invoke(new Action(() =>
{
if (e.Data!=null && e.Data.Contains("nastything"))
{
System.Windows.Forms.MessageBox.Show("Something nasty happened in console ");
}
if (e.Data!=null) f2.richTextBox1.AppendText(e.Data + "\n");
}));
}

或者使用try-catch。

关于c# - 处理 ErrorDataReceived 时出现 NullReferenceException - 终止线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18261904/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com