ASP.NETは、多くのWebサーバーテクノロジと同様に、この種のリアルタイムタスクを実行するようには設計されていません。可能であれば、いくつかの癖でも、多くの問題に遭遇する可能性があります。サーバはいつでも再起動したり、クラスタ上で実行したりすることができます。
私はそれをどうやって解決するのかを提案できます。
"リアルタイム"の精度は必要ないかもしれませんが、1分(または5分)ごとに間隔を空けて、この時点で予定されているすべての電子メールを送信するだけで十分でしょう例:
// Of course, I don't know where your Data is coming from etc... asume some services doing that
public ActionResult SendDueEMails()
{
// Query everything older then 30 minutes...
var dueEMails = SomeReminderRepository.GetReminders();
foreach (var dueEMail in dueEMails)
{
// Process sending of e-Mails
EMailService.SendReminder(dueEMail);
}
return Content(dueEMails.Count + " e-Mails sent.");
}
その後、あなたはこのURLごとに1分を要求しているいくつかの外部で構成されたタスク(ここでは可能性のトン)を持つことができます。
これはリアルタイムではなく、よりスケジュールされていますが、問題が解決されます。
あなたの質問はおそらくあまりにも漠然としていると思いますが、今後の予定や予定を確認するサービスが必要なように聞こえます。それはWebアプリケーションなので、私はHangfire https://www.hangfire.io/や、.netコアの新しいHostedServiceのようなものを探してみることをお勧めしますhttps://www.stevejgordon.co.uk/asp-net-core -2-ihostedservice –