HostingEnvironment RegisterObject和QueueBackgroundWorkItem

本文探讨了在ASP.NET中如何可靠地调度和执行后台任务,重点比较了HostingEnvironment.RegisterObject和QueueBackgroundWorkItem。通过测试,作者发现QueueBackgroundWorkItem在应用程程序域卸载后能存活30秒,而RegisterObject可以坚持5分钟左右。文中提供了测试代码和推荐使用RegisterObject的理由,并分享了一个源码地址以验证相关行为。此外,还提及了在IIS环境下,只要应用程序池进程ID不变,BackgroundTaskManager.Run方法内的代码不会受影响。
摘要由CSDN通过智能技术生成

其实网上关于HostingEnvironment 的RegisterObject和QueueBackgroundWorkItem文章已经很多了,典型是的

QueueBackgroundWorkItem to reliably schedule and run background processes in ASP.NET

Fire and Forget on ASP.NET   该文章里面涉及到一个开与项目 AspNetBackgroundTasks  

而我本次的测试也是基于AspNetBackgroundTasks来测试的,Fire and Forget on ASP.NET里面提到了3点:个人英文不太好 就把原文贴出来吧

大致意思就是Task.Run, Task.Factory.StartNew, Delegate.BeginInvoke, ThreadPool.QueueUserWorkItem 像这样的code, 在应用程程序域的DomainUnload以后,马上消失;在4.5.2 以后我们可以考虑 HostingEnvironment.QueueBackgroundWorkItem方法,它在 在应用程程序域的DomainUnload以后可以坚持30秒,后面我测试过也差不多就是这个时间。推荐做法就是用 HostingEnvironment.RegisterObject 它坚持的时间更长(我本地测试大致为5分钟)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值