MVC 3とC#でWebアプリケーションを使用しています。
1時間ごとに無制限の時間メソッドを実行する必要があります。実装方法を教えてください。
サンスク。
関連している
MVC 3とC#でWebアプリケーションを使用しています。
1時間ごとに無制限の時間メソッドを実行する必要があります。実装方法を教えてください。
サンスク。
関連している
System.Timers.Timerを使用できます。ただし、ASP.NET アプリケーションで繰り返しバックグラウンド タスクを実装するのは危険な作業であることに注意してください。IIS はいつでも、状況によってはアプリケーション プールをリサイクルできることを忘れないでください (サイトでの非アクティブ期間、CPU/メモリのしきい値に達するなど)。開始した可能性のあるすべてのバックグラウンド タスクをダウンさせます。
これを行う正しい方法は、別のアプリケーションに実装することです。これは、たとえば、Windows サービスまたは Windows スケジューラで定期的に実行するようにスケジュールされた単純なコンソール アプリケーションである可能性があります。
ダリンは正しいですが、アプリでそれを行う必要がある場合は、次のようにします。
Global.asax.cs 内
static void ScheduleTaskTrigger()
{
HttpRuntime.Cache.Add("ScheduledTaskTrigger",
string.Empty,
null,
Cache.NoAbsoluteExpiration,
TimeSpan.FromMinutes(60), // Every 1 hour
CacheItemPriority.NotRemovable,
new CacheItemRemovedCallback(PerformScheduledTasks));
}
static void PerformScheduledTasks(string key, Object value, CacheItemRemovedReason reason)
{
//Your TODO
ScheduleTaskTrigger();
}
void Application_Start(object sender, EventArgs e)
{
ScheduleTaskTrigger();
}
理想的には、代わりに Windows サービスまたはスケジュールされたタスクを使用します
最善の方法は、Azure 関数を使用することです。まさにこの問題のために設計されました。それは実際にはかなり良いです。タイマー トリガーを使用して、スケジュールされたタスクをいつでも実行できます。
https://docs.microsoft.com/en-us/azure/azure-functions/functions-overview