3

他のアプリケーションからの出力をキャプチャしようとしています。ping からの出力のキャプチャーはうまく機能します。変数 output には、期待される出力が含まれます。

    var p = new Process();
    p.StartInfo.FileName = "ping";
    p.StartInfo.Arguments = "www.google.com";
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.CreateNoWindow = true;
    p.Start();

    var output = p.StandardOutput.ReadToEnd();
    p.WaitForExit();

しかし、このコードを使用して expdp (エクスポート用のオラクル ツール) の出力をキャプチャすると、変数は空になります。コンソールで同じコマンドを実行すると、何らかの出力が返されます。

    p.StartInfo.FileName = "expdp";
    p.StartInfo.Arguments = "help=y";

何か不足していますか?

4

2 に答える 2

1

私はかつてこの問題を抱えていました。最新の回答は理にかなっていますが、問題が発生してから 6 か月後に表示されたため、テストしていません。基本的に問題は、ReadToEnd() が、まだ画面に何も出力されていない p.Start() の直後の正確な時点で読み取ることです。start と ReadToEnd() の間に長いスリープを置くことで確認できます。

于 2013-05-09T20:57:01.160 に答える