時間のかかる重たい処理なんかはサーバサイドに用意しておいたexeを非同期でつついたほうがいい場合があります。当然ながらクライアントサイドのexeはつつけませんが、メールの大量送信(スパムではありません)なんかをするときには結構重宝します。
//非同期でexeつつく
System.Diagnostics.Process.Start(“C:¥¥hoge¥¥hoge.exe”);//同期でexeつつく
System.Diagnostics.Process prExe = System.Diagnostics.Process.Start(“C:¥¥hoge¥¥hoge.exe”);
prExe.WaitForExit();
上のサンプルコードは非同期です。つまり、つついた後は放置です。つつき逃げみたいな感じです。
でも、多分上のサンプルのほうが現実的なような気がします(今回の用途では、という意味で)。
下のサンプルは同期しますが、exeのプロセスが消えるまで「待つだけ」です。ほとんどフリーズと同じです。
//非同期でexeつついて、exeの実行が終了したらイベント起こす
System.Diagnostics.Process prExe = System.Diagnostics.Process.Start(“C:¥¥hoge¥¥hoge.exe”);
prExe.EnableRaisingEvents = true;
prExe.Exited += new EventHandler(prExe_Exited);private void prExe_Exited(object sender, EventArgs e)
{
//終了したらこのメソッドが呼ばれます
}
このサンプルだと、非同期でexeつついておいて、プロセスが終了したら「終わったよ」というイベントあげてくれます。WEBアプリの場合、サーバからクライアントにイベント通知はできないけど、「処理が終わりました」メールくらいは送れそうです。
まぁ、Windowsアプリ向けの手法でしょうね。