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