我有一个解析txt文件并生成如下输出的程序:
如您所见,它有效。但是,如果使用args作为一行执行“map-server.exe”(即没有cd命令),它将不起作用。
我现在正试图在C#winform应用程序中使用它。
我想执行这个“map-server.exe”并传递我选择的* .txt文件的arg,并在我的应用程序上重新导出一个richtextbox输出。
所以,我尝试了以下内容:
namespace Test
{
public partial class Test : Form
{
private string currentDir = System.IO.Path.GetDirectoryName(
System.Reflection.Assembly.GetExecutingAssembly().Location);
public Test()
{
InitializeComponent();
}
private void Test_Load(object sender, EventArgs e)
{
ParseScript("jobmaster.txt");
}
private void ParseScript(string fileName)
{
Process p = new Process()
{
StartInfo = new ProcessStartInfo()
{
FileName = "cmd.exe",
Arguments = "/C cd /D " + currentDir + "\\script_checker_bin && map-server.exe --script-check "+ fileName,
CreateNoWindow = true,
UseShellExecute = false,
ErrorDialog = false,
RedirectStandardInput = true,
RedirectStandardOutput = true,
RedirectStandardError = true,
},
EnableRaisingEvents = true,
SynchronizingObject = this
};
p.OutputDataReceived += (s, e) => UpdateLog(s, e);
p.Start();
p.BeginOutputReadLine();
}
private void UpdateLog(object sender, DataReceivedEventArgs e)
{
if (null != e.Data && e.Data.Length > 0)
this.richTextBox1.AppendText(e.Data);
}
}
}
启动应用时,e.Data
始终为null
。知道为什么这不起作用吗?
我的应用程序编译为Test.exe
,这是所有文件的位置: