我有一个应用程序,它依赖于在特定时间触发事件(电话)。我正在使用共享主机,所以我不能只设置 Windows 服务或 cron 作业。
我有一个诸如 /CheckCalls 之类的 URL,用于查询我是否在 +/- 60 秒后安排了任何呼叫,然后将其关闭。
我定期通过 bash 脚本(或通过 cron 服务)调用它。
如果,在控制器中,我在执行开始时启动了一个有延迟的新线程(例如 sleep(2000)),我可以期望它在控制器完成后 2 秒还活着,以触发它的消息吗?
这样我可以 a) 避免重复 b) 确保事情在正确的时间发生。
如下所示, Thread.Sleep() 并不是我问题的重点。我已经阅读并使用了另一种方法,但问题仍然存在:如果我在某处的付费托管环境中,我可以在可能存在 2 分钟的页面中启动一个后台线程,并期望它执行吗?
编辑:我找到了处理这个主题的这个线程,并使用 HttpRuntime.Cache 作为 hack 来实现它。
也许更有趣的是,线程中的一条评论说明了我所害怕的:如果没有其他事情发生,计时器不会让应用程序池保持活动状态。
https://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/