0
私はsDelete64.exeをWinFormsアプリケーション内で実行しています。出力をテキストボックスにリダイレクトします。ただし、出力の最初の行だけがリダイレクトされます。正常に実行するとsDeleteは何を表示するのですか?コマンド出力をテキストボックスにリダイレクト
sDelete is set for 1 pass.
Zeroing free space on C:\: 0%
リダイレクトすると、最初の行だけが表示されます。私がdirのようなコマンドをリダイレクトすると、何も問題は起こりません。
private bool ExecuteCmd(string command)
{
var startInfo = new ProcessStartInfo("cmd.exe")
{
RedirectStandardInput = true,
RedirectStandardOutput = true,
RedirectStandardError = true,
UseShellExecute = false,
CreateNoWindow = true,
Arguments = "/c " + command
};
_process = new Process { StartInfo = startInfo };
Logger.Debug(string.Format("Cmd.exe is Launching command {0}", command));
_process.Start();
_process.OutputDataReceived += (o, e) =>
{
if (!string.IsNullOrEmpty(e.Data))
{
Logger.Debug("Updating loading panel with {0}", e.Data);
_textBox.Text += e.Data + "\r\n";
}
};
_process.ErrorDataReceived += (o, e) =>
{
if (!string.IsNullOrEmpty(e.Data))
{
Logger.Debug("Updating loading panel with {0}", e.Data);
_textBox.Text += e.Data + "\r\n";
}
};
_process.BeginErrorReadLine();
_process.BeginOutputReadLine();
_process.WaitForExit();
return _process.HasExited;
sDeleteのStandardOutputがキャプチャされない原因は何ですか?
まず、イベントハンドラを割り当てる前にStart()を呼び出すのは奇妙に思えます。ここで重要かどうかわからない... – DonBoitnott