現在、外部アプリケーションが実際に dll の 1 つ (アップデータ コード) を消費しているかどうかをテストするために、次のコードを実行しています。
ProcessStartInfo psi = new ProcessStartInfo()
{
FileName = "Tasklist.exe",
Arguments = @"/m MyServices.dll",
CreateNoWindow = true,
RedirectStandardOutput = true,
UseShellExecute = false
};
Process p = new Process();
p.StartInfo = psi;
p.Start();
//debug output box, just to see everything that returns
txtOutput.Text = p.StandardOutput.ReadToEnd();
p.WaitForExit();
Refresh();
if (txtOutput.Text.Contains("TestProgram.exe"))
MessageBox.Show("Found It");
さて、このコードは動作します!!! ....しかし、その STUPID は遅いです。同じコマンドを cmd ウィンドウに入力して、10 分の 1 秒で応答を得ることができますが、何らかの理由で、その行の一時停止にp.StandardOutput.ReadToEnd()
1 ~ 5 分かかります!!
そして今、実際の質問:
なぜそんなに遅いのか誰か知っていますか?または、それを修正して許容できる速度にする方法はありますか?
更新: 追加データ
シェル ウィンドウを使用していて、実際に出力をキャプチャしない場合、シェル ウィンドウでタスクの実行を監視できます。わずかに (わずかに) 高速に実行されますが、出力がシェル ウィンドウに表示されるまでに 1 分かかります。それが何をしているのか分かりません。