2006年4月アーカイブ

時間のかかる重たい処理なんかはサーバサイドに用意しておいた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アプリ向けの手法でしょうね。

このアーカイブについて

このページには、2006年4月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2006年3月です。

次のアーカイブは2006年6月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。