C#で1つのプロセスの出力を非同期に読み取る際に問題があります。 このサイトで他にも同様の質問がありましたが、本当に助けにはなりません。ここで は私が何をすべきかです:プロセス出力をC#で非同期で終了する方法
- は、新しいプロセスを作成します
- セット -FileName、引数、CreateNoWindow(真)、あるUseShellExecute(偽)、RedirectStandardOutput(真)
- OutputDataReceivedにイベントハンドラを追加しstartinfo。
- 開始プロセスBeginOutputReadLineとWaitForExit()。
それは正常に動作しますが、私のコードは、行ずつ読み込み、パーセントが表示されませんので、起動されたプロセスの出力は、私が取得したいが、私はできませんいくつかのパーセント(%
)を書き込みます。
例:
%0,%1...%100
Finished.
マイ出力:
%0
Finished.
ここに私のプログラムの現在のコードです:
StringBuilder sBuilder = new StringBuilder();
static void proc_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
sBuilder.AppendLine(e.Data);
}
static void CommandExecutor()
{
Process process = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = /*path of the program*/,
Arguments = /*arguments*/,
CreateNoWindow = true,
UseShellExecute = false,
WindowStyle = ProcessWindowStyle.Hidden,
RedirectStandardOutput = true
}
};
process.OutputDataReceived += new DataReceivedEventHandler(proc_OutputDataReceived);
process.Start();
process.BeginOutputReadLine();
process.WaitForExit();
}
あなたはそれがヒットした回数を確認するためにappenlineメソッドにブレークポイントを置くことがありますか?コンソールアプリケーションでは、パーセンテージがお互いを上書きするのか、それとも連続的なのでしょうか? –
パーセンテージが上書きされます。私は何が起こるかを見るためにブレークポイントを設定します... –
それは8回ヒットしました... –