asp.net后台工作线程
本文关键字:线程 工作 后台 net asp | 更新日期: 2023-09-27 18:11:35
我计划在asp.net网站的应用程序启动事件中启动一个后台线程(在global.asax中)。
我在很多地方读到这不是一个好的做法,因为这个线程可能会崩溃整个IIS进程或可能导致其他问题。
我需要启动一个后台线程,定期连接到另一个服务器和更新数据库,所以:
这种情况下的最佳实践是什么?我可以只是将线程标记为背景,以便在其他线程停止时自动停止吗?如果在这种情况下启动线程不是一个好的选择,那么最好的替代是什么?
请注意,ASP中的任何后台工作。. NET可以在AppDomain回收时毫无预警地消失。Windows服务和计划任务没有那么多理由消失,但它们也可以消失(重新启动、部署、蓝屏、断电,或者代码中的错误!)。
你必须能够容忍任何工作消失。只要这样,你就可以安全地启动后台工作。
你可以使用计时器,或者更简单地说,一个任务只做:
while (true) {
DoWork();
await Task.Delay(...);
}
确保记录错误
考虑使用Azure。这里可以使用WebJob或WorkerRole