2009-03-13 12 views
1

私は新しいWebアプリケーションのプロジェクトを進めています。私は機能の重要なポイントを特定していますが、私は明らかに次のようにアプローチする方法を知らないことがあります:サーバー側のタイムドイベントを作成するにはどうすればよいですか?

1分に1回、サーバーはそのデータに対して一連の計算を実行し、導出された要約。

本質的に私が必要とするのは、ユーザーがアクティブでなくても、1分に1回、サーバーサイドスクリプトを確実に実行する方法です。

私はWebインターフェイス用にASP.NET 3.5、C#を使用しています。データのバックエンドにSQL 2005を使用する。

変更されているすべてのデータがSQL側であると仮定します。その場合、スクリプトは完全に機能します。

ありがとうございます。

+0

何も知らないではないのですか? – Tobias

答えて

1

ウェブサイトの「バックグラウンド」処理には2つのオプションがあります。あなたはサイトの一部としてそれを行うことはできませんでしたが、Windowsサービス(すべて同じビジネスオブジェクトを使用することができます)で行うか、Webアプリケーションで開始されたバックグラウンドスレッドで行うことができます。私たちは、成功したものと違ったものを使っています。私たちのApplication_Startでは、我々はない:BackgroundThread.CheckoutUpdateがpublic static void CheckoutUpdate()

2

キャッシュにアイテムを1分間で保存します。アイテムがドロップされたときにコールバックメソッドを割り当てるようにしてください。 1分後にアイテムが削除され、コールバックが実行されます。そこにあるものを元に戻して、そのアイテムを再びキャッシュに追加しますか?

0

として定義されて

//Submit background thread to update time left hospital 
System.Threading.Thread checkoutThread = 
    new System.Threading.Thread(BackgroundThread.CheckoutUpdate); 
checkoutThread.IsBackground = true; 
checkoutThread.Priority = System.Threading.ThreadPriority.BelowNormal; 
checkoutThread.Start(); 

はそれをすべて行うために、SQL Serverのを取得します。操作を実行するストアド・プロシージャを作成し、Enterprise Manager - >管理 - >ジョブ内でジョブを設定します。ストアドプロシージャを呼び出すようにジョブに指示します。

1

System.Timersを使用できませんか?

using System; 
using System.Timers; 
namespace App 
{ 
    class Program 
    { 
     static void TimerEvent(object s,ElpasedEventArgs arg) 
     { 
      //handle your stuff here 
     } 
     static void Main() 
     { 
      Timer t = new Timer(60000); //60 seconds * 1000 = 60.000 
      t.Elapsed += new ElapsedEventHandler(TimerEvent); 
      t.Start(); 
     } 
    } 
} 

念のためにあなたは...勝利のマシン上で好きcronジョブ

関連する問題