4月 08
このエントリをはてなブックマークに登録 Yahoo!ブックマークに登録

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

関連性のあるエントリ:

  1. ASP.NETでJavaScriptのconfirmを表示し、処理を分岐させる方法
  2. C#でのメール受信
  3. C#で作るフォルダ監視サービス
  4. FlexでHTTPServiceを使ってWebサーバ上のXMLを取得、利用する方法
  5. AIRでアプリケーション終了の確認ダイアログを表示する

Leave a Reply

Get Adobe Flash playerPlugin by wpburn.com wordpress themes
preload preload preload