特定の時間にイベント (電話) を発生させることに依存するアプリがあります。共有ホスティングを使用しているため、Windows サービスまたは cron ジョブをセットアップすることはできません。
/CheckCalls などの URL があり、今から +/- 60 秒後に予定されている通話があるかどうかを照会し、それらを起動します。
これを定期的に bash スクリプト経由で (または cron サービス経由で) 呼び出します。
コントローラーで、実行の開始時に遅延 (スリープ (2000) など) を使用して新しいスレッドを起動した場合、コントローラーが終了してから 2 秒後にスレッドが生きていることを期待できますか?
このようにして、a) 重複を回避し、b) 正しいタイミングで物事が進むようにすることができました。
以下のように、 Thread.Sleep() は私の質問の焦点ではありません。別の方法を読んで使用しましたが、疑問はまだ残っています: どこかの有料ホスティング環境にいる場合、2 分間存続する可能性のあるページでバックグラウンド スレッドを起動し、それが実行されることを期待できますか?
編集: このトピックを扱っているこのスレッドを見つけ、これを実装するためのハックとして HttpRuntime.Cache を使用しています。
おそらくもっと興味深いのは、私が恐れていたことを述べているスレッドのコメントです。他に何も起こっていない場合、タイマーはアプリケーションプールを維持しません。
https://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/