1

Web サービスが X 時間ごとにクリーンアップ ルーチンを呼び出すようにしたいと考えています。メソッドを呼び出してこのサービスを開始できることは理解していますが、ユーザーの操作はまったく必要ありません。このサービスを公開したいのですが、自動的に開始され、X 時間ごとにクリーンアップ プロセスが実行されます。

何か案は?

4

1 に答える 1

2

X 時間ごとにオフになるタイマーをGlobal.asax.csファイルに設定するか、X 時間ごとにオフになるスケジュールされたタスクを作成して、クリーンアップ サービスをトリガーすることもできます。

プロジェクトにグローバル ファイルがない場合は、プロジェクトに追加するだけで簡単に追加できます。これを行うには、プロジェクトを右クリック -> [追加] -> [新しい項目] を選択し、表示されるダイアログで [グローバル アプリケーション クラス] を選択して [追加] をクリックします。次に、Application_Startイベント内でタイマーを初期化してアクションを実行できます。

public class Global : System.Web.HttpApplication
{
    private static System.Threading.Timer timer;

    protected void Application_Start(object sender, EventArgs e)
    {
        var howLongTillTimerFirstGoesInMilliseconds = 1000;
        var intervalBetweenTimerEventsInMilliseconds = 2000;
        Global.timer = new Timer(
            (s) => SomeFunc(),
            null, // if you need to provide state to the function specify it here
            howLongTillTimerFirstGoesInMilliseconds,
            intervalBetweenTimerEventsInMilliseconds
        );
    }

    private void SomeFunc()
    {
        // reoccurring task code
    }

    protected void Application_End(object sender, EventArgs e)
    {
        if(Global.timer != null)
            Global.timer.Dispose();
    }
}

グローバル ファイルの詳細については、MSDNを参照してください。

于 2012-11-06T20:57:39.890 に答える