前段时间需要在项目里面做一个小的定时任务,搜索一遍,找到一个简易的包,其内部是用Threading.Timer来实现的。使用过程中发现了一个问题,NET452里面Threading.Timer有个long延迟时间和时间间隔参数的构造函数,但实际操作时发现,当传的参数大于int32最大值时,会报错参数必须小于 2^32-2。这个应该是.NETFramework的bug,在NetStandard中已经没有了long参数的构造函数。
第二个问题还是和这个定时任务有关。定时任务上线后,业务方反应定时任务有时执行,有时不执行。在ASP.NET中大家都知道,IIS应用程序池回收后,程序会停止直到有新的请求时才会重新启动。但是在ASP.NET Core中,最早了解的一个知识点就是.Net Core程序不寄宿在IIS的工作进程中,IIS只是作为一个反向代理。这句话对也不对,IIS确实是为.Net Core程序提供反向代理服务,但并不仅仅只是反向代理,通过AspNetCoreModule,IIS同时也能管理.Net Core程序的生命周期。
参考资料: