1

別の Borland C コンソール アプリを実行する C# コンソール アプリがありました。問題なく動作しました。しかし、最初のアプリを WinForm アプリに作り直した後、Borland C コンソール アプリから出力を取得できません。

コードはここにあります:

Process p = new Process();    
p.StartInfo.CreateNoWindow = true;    
p.StartInfo.UseShellExecute = false;    
p.StartInfo.RedirectStandardError = true;    
p.StartInfo.RedirectStandardOutput = true;    
p.StartInfo.FileName = name1;    
p.Start();    
StreamReader sr = p.StandardOutput;    
progOutput = sr.ReadToEnd();    
//progOutput = p.StandardOutput.ReadToEnd();    
p.WaitForExit();    

文字列progOutputが空です。progOutput = p.StandardOutput.ReadToEnd();代わりにline を使用すると、同じ結果が得られます StreamReader

Borland C コンソール アプリが実際に起動し、出力ファイルが正常に作成されました。
しかし、WinFormアプリでは出力が消えました。前述したように、このコードは C# コンソール アプリでは正常に機能しましたが、C# Windows フォーム アプリでは機能しません。

ところで、WinForm アプリで C# コンソール アプリを実行すると、出力は問題ありません。Borland C の出力に何か問題がありますか? しかし、C# コンソール アプリで Borland C アプリを実行するとうまくいきました。だから私は困惑しています。

ありがとう

4

2 に答える 2

1

いくつかのシナリオでは、そのように間接的に実行可能ファイルを起動することが有益であることがわかりました。

p.StartInfo.FileName = "cmd";
p.StartInfo.Arguments = "/C " + name1;

..特に出力リダイレクトの問題がある場合。しかし、あなたはそれがコンソールアプリとして機能したと言いますか?!

于 2012-05-01T02:54:14.677 に答える
0

小切手

var errorOut = p.StandardError.ReadToEnd();

StandardErrorとして出力される場合があります。これに関連する多くの質問を見つけることができます。StandardOutputからの出力を期待していますが、StandardErrorにリダイレクトされます。

于 2012-05-01T02:53:29.537 に答える