我打算在一个ASP .net网站(global.asax内部)的应用程序启动事件中启动一个后台线程。
我在许多地方读到过,这不是一个好的做法,因为这个线程可能会使整个IIS进程崩溃,或者可能导致其他问题。
我需要启动一个定期连接到另一台服务器并更新数据库的后台线程,因此:
这种情况下的最佳实践是什么?我是否可以将线程标记为后台,以便在其他线程停止时自动停止?如果在这种情况下启动线程不是一个好的选择,那么最好的替代方案是什么?
发布于 2015-09-07 18:19:37
请注意,当AppDomain回收时,ASP.NET中的任何后台工作都可能在没有警告的情况下消失。Windows服务和计划任务没有太多理由消失,但它们也可以消失(重启、部署、蓝屏、断电,或者是代码中的某个bug!)。
你必须能够容忍任何工作的消失。只要是这种情况,你就可以安全地开始后台工作。
你可以使用一个计时器,或者更简单的一个任务:
while (true) {
DoWork();
await Task.Delay(...);
}一定要记录错误。
发布于 2015-09-07 18:12:04
考虑使用Azure。在那里,您可以使用WebJob或WorkerRole
https://stackoverflow.com/questions/32435626
复制相似问题