0
我试图创建一个minecraft服务器包装,但即时通讯读取过程的输出有困难。我想读取serverProcess_ErrorDataRecevied事件中的输出,我知道现在有什么不起作用。但是我可以放什么来阅读它?如何从过程输出读取
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;
namespace MC_Server_UI
{
public partial class Form1 : Form
{
ProcessStartInfo startInfo = new ProcessStartInfo("C:\\Program Files (x86)\\Java\\jre7\\bin\\java.exe", "Xmx1024M - jar " + "craftbukkit.jar" + " nogui");
Process serverProcess;
OpenFileDialog ofd;
FolderBrowserDialog fbd;
public Form1()
{
InitializeComponent();
fbd = new FolderBrowserDialog();
fbd.ShowDialog();
startInfo.WorkingDirectory = fbd.SelectedPath;
startInfo.RedirectStandardInput = startInfo.RedirectStandardError = true;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;
serverProcess = new Process();
serverProcess.StartInfo = startInfo;
serverProcess.EnableRaisingEvents = true;
serverProcess.ErrorDataReceived += new DataReceivedEventHandler(serverProcess_ErrorDataReceived);
serverProcess.Exited += new EventHandler(serverProcess_Exited);
serverProcess.Start();
}
private void serverProcess_ErrorDataReceived(object sender, EventArgs e)
{
richTextBox1.AppendText(serverProcess.StandardError.ReadToEnd());
}
private void serverProcess_Exited(object sender, EventArgs e)
{
}
}
}
我没有看到如何回答我的问题。我重定向了流并使用.ReadToEnd不起作用。 – user2587567
“StandardError”和“StandardOutput”是一个“StreamReader”。您可以使用它从流程中提取输出。 'OutputDataReceived'是一个也可以工作的事件。 – Romoku
经过一些测试后,我注意到事件只会触发,如果我已经完成.BeginErrorReadLine但使用.ReadToEnd然后将引发异常。 – user2587567