■77675 / inTopicNo.1) |
DOSコマンドを実行し出力データを取得する |
□投稿者/ むむ (5回)-(2015/11/15(Sun) 16:10:03)
|
分類:[C#]
2015/11/15(Sun) 16:14:53 編集(投稿者)
VisualStudio2015 C# Win7 32bit
お世話になります。
「DOSコマンドを実行し出力データを取得する」 http://dobon.net/vb/dotnet/process/standardoutput.html
上記サイトの「非同期で出力データを取得する」のサンプルソースを元に、コンソールアプリの出力を試しています。
まず、以下のバッチをコンソール上で実行した場合、
(Bat)----------------------------- echo off ping localhost pause
ping localhost pause -----------------------------
(出力結果)----------------------------- homework [::1]に ping を送信しています 32 バイトのデータ: ::1 からの応答: 時間 <1ms ::1 からの応答: 時間 <1ms ::1 からの応答: 時間 <1ms ::1 からの応答: 時間 <1ms
::1 の ping 統計: パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、 ラウンド トリップの概算時間 (ミリ秒): 最小 = 0ms、最大 = 0ms、平均 = 0ms 続行するには何かキーを押してください . . . -----------------------------
となります。 これをサイトのサンプルソースで実行した場合
(出力結果)----------------------------- homework [::1]に ping を送信しています 32 バイトのデータ: ::1 からの応答: 時間 <1ms ::1 からの応答: 時間 <1ms ::1 からの応答: 時間 <1ms ::1 からの応答: 時間 <1ms
::1 の ping 統計: パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、 ラウンド トリップの概算時間 (ミリ秒): 最小 = 0ms、最大 = 0ms、平均 = 0ms -----------------------------
となり、最後の行にpause命令によるキー入力を促すメッセージが表示されません。
この状態からEnterキーを送ってやる(sw.Write('\r'))と 「続行するには何かキーを押してください . . .」が表示され、 次の処理へと移っていきます。
なぜ、このように1行分が遅れて出力されるのでしょうか。 この遅れを解決する方法は有りますでしょうか。
以上、よろしくお願いしますm(__)m
|
|