1

私のコードは:

Process myProcess = new Process();
myProcess.StartInfo.FileName = @"batchfile.bat";
myProcess.StartInfo.Arguments = "some argument";
myProcess.StartInfo.UseShellExecute = false;
myProcess.StartInfo.CreateNoWindow = true;
myProcess.StartInfo.RedirectStandardInput = true;
myProcess.StartInfo.RedirectStandardOutput = true;
myProcess.Start();
StreamReader sr = myProcess.StandardOutput;
textBox1.Text = sr.ReadToEnd();

myProcess.WaitForExit();

動作しますが、非同期出力を取得したいです。

助けてくれてありがとう。

4

1 に答える 1

1

基本的に、で非同期読み取り操作を有効にする必要がありますStandardOutput

非同期読み取り操作を開始するStandardOutputには、バッチのストリームをリダイレクトし、イベント ハンドラーをイベントに追加してOutputDataReceived、 を呼び出す必要がありますBeginOutputReadLine。その後、バッチがリダイレクトされたストリームOutputDataReceivedに行を書き込むたびに、イベントが通知されます。StandardOutput

MSDNで完全な例を見つけることができます。

Processクラスは、コマンドをプロセスの標準入力に送信できるようにする StandardInput プロパティも公開します。

この記事は役に立つかもしれません。

于 2013-11-05T09:19:52.300 に答える