前段時(shí)間需要在項(xiàng)目里面做一個(gè)小的定時(shí)任務(wù),搜索一遍,找到一個(gè)簡(jiǎn)易的包,其內(nèi)部是用Threading.Timer來(lái)實(shí)現(xiàn)的。使用過(guò)程中發(fā)現(xiàn)了一個(gè)問(wèn)題,NET452里面Threading.Timer有個(gè)long延遲時(shí)間和時(shí)間間隔參數(shù)的構(gòu)造函數(shù),但實(shí)際操作時(shí)發(fā)現(xiàn),當(dāng)傳的參數(shù)大于int32最大值時(shí),會(huì)報(bào)錯(cuò)參數(shù)必須小于 2^32-2。這個(gè)應(yīng)該是.NETFramework的bug,在NetStandard中已經(jīng)沒(méi)有了long參數(shù)的構(gòu)造函數(shù)。
第二個(gè)問(wèn)題還是和這個(gè)定時(shí)任務(wù)有關(guān)。定時(shí)任務(wù)上線后,業(yè)務(wù)方反應(yīng)定時(shí)任務(wù)有時(shí)執(zhí)行,有時(shí)不執(zhí)行。在ASP.NET中大家都知道,IIS應(yīng)用程序池回收后,程序會(huì)停止直到有新的請(qǐng)求時(shí)才會(huì)重新啟動(dòng)。但是在ASP.NET Core中,最早了解的一個(gè)知識(shí)點(diǎn)就是.Net Core程序不寄宿在IIS的工作進(jìn)程中,IIS只是作為一個(gè)反向代理。這句話對(duì)也不對(duì),IIS確實(shí)是為.Net Core程序提供反向代理服務(wù),但并不僅僅只是反向代理,通過(guò)AspNetCoreModule,IIS同時(shí)也能管理.Net Core程序的生命周期。
參考資料: