ASP.Net と C# を使用しています。特定の時間に何かを同期したい。これを行うための方法を作成しましたが、機能しています。しかし、私の問題は、特定の時間に毎日このメソッドを呼び出す方法です。
クライアントはサードパーティのツールを信頼していないため、使用できません。
Windows サービスは適切なソリューションではありません。
Web サービスを作成する場合、毎日特定の時間にどのように呼び出す必要がありますか?
たとえば、メソッドを毎日午後 7 時に実行したいとします。
ASP.Net と C# を使用しています。特定の時間に何かを同期したい。これを行うための方法を作成しましたが、機能しています。しかし、私の問題は、特定の時間に毎日このメソッドを呼び出す方法です。
クライアントはサードパーティのツールを信頼していないため、使用できません。
Windows サービスは適切なソリューションではありません。
Web サービスを作成する場合、毎日特定の時間にどのように呼び出す必要がありますか?
たとえば、メソッドを毎日午後 7 時に実行したいとします。
起動時に、有効期限が固定された項目を 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));
}
Windowsのスケジュールされたタスクを使用してアプリケーション(exe)を実行するか、Windowsサービスを作成してタイマーを使用できます。それも使用できるQuartz.NETを見てください。