2

こんにちは、仲間のプログラマー、

私はこれについて頭を悩ませています。次の方法を使用してプロセスを開始しています。最初は wkhtmltoimage.exe で、次に wkhtmltopdf.exe です。Process_Exited常に呼び出されるとは限らないことを除いて、すべてが期待どおりに機能します。適切なボタンを数回押したプログラムの 1 回の実行中に、考えられるすべてのバリエーションがありました。

  • wkhtmltoimage のみがイベントを発生させました
  • wkhtmltopdf のみがイベントを発生させました
  • 両方やった
  • イベントはまったく発生しませんでした。

タスク マネージャーとデバッガーを介して、プロセスが常に正常に終了したことを確認できました。
再現可能なものはなく、実行ごとに異なります。これはプロセスでの私の最初の試みです。おそらく私は何か間違ったことをしています。幸いなことに、この問題を解決することは、私のアプリケーションにとって重要ではありません。

protected Process StartProcess(string FileName, string Arguments)
{
    ProcessStartInfo MyStartInfo = new ProcessStartInfo(FileName, Arguments)
    {
        UseShellExecute = false,
        CreateNoWindow = true,
        RedirectStandardOutput = true,
        RedirectStandardInput = true
    };

    Process Proc = new Process { StartInfo = MyStartInfo };
    Proc.EnableRaisingEvents = true;
    Proc.Exited += (sender, name) => Process_Exited(Proc, Proc.ProcessName);
    Proc.Start();

    return Proc;
}


protected void Process_Exited(object sender, string ProcessName)
{
    Debug.WriteLine("Process_Exited: " + ProcessName);
}
4

1 に答える 1

0

プロセスが終了しているときに、プログラムがまだ実行されていることを確認してください。

Process_Exited が呼び出される前に、プログラムが終了しているとは思えません。

于 2013-03-28T09:48:50.923 に答える