4

ASP.Net と C# を使用しています。特定の時間に何かを同期したい。これを行うための方法を作成しましたが、機能しています。しかし、私の問題は、特定の時間に毎日このメソッドを呼び出す方法です。

クライアントはサードパーティのツールを信頼していないため、使用できません。

Windows サービスは適切なソリューションではありません。

Web サービスを作成する場合、毎日特定の時間にどのように呼び出す必要がありますか?

たとえば、メソッドを毎日午後 7 時に実行したいとします。

4

2 に答える 2

9

起動時に、有効期限が固定された項目を HttpRuntime.Cache に追加します。キャッシュ アイテムの有効期限が切れたら、WebRequest などの作業を行います。有効期限が固定されたアイテムをキャッシュに再度追加します。

private static CacheItemRemovedCallback OnCacheRemove = null;

protected void Application_Start(object sender, EventArgs e)
{
    AddTask("DoStuff", 60);
}

private void AddTask(string name, int seconds)
{
    OnCacheRemove = new CacheItemRemovedCallback(CacheItemRemoved);
    HttpRuntime.Cache.Insert(name, seconds, null,
        DateTime.Now.AddSeconds(seconds), Cache.NoSlidingExpiration,
        CacheItemPriority.NotRemovable, OnCacheRemove);
}

public void CacheItemRemoved(string k, object v, CacheItemRemovedReason r)
{
    // do stuff here if it matches our taskname, like WebRequest
    // re-add our task so it recurs
    AddTask(k, Convert.ToInt32(v));
}
于 2012-05-29T07:15:20.237 に答える
0

Windowsのスケジュールされたタスクを使用してアプリケーション(exe)を実行するか、Windowsサービスを作成してタイマーを使用できます。それも使用できるQuartz.NETを見てください。

于 2012-05-29T07:08:57.920 に答える