asp.net 定時(shí)間點(diǎn)執(zhí)行任務(wù)的簡易解決辦法
更新時(shí)間:2009年12月06日 22:35:29 作者:
這里的定時(shí)間點(diǎn)執(zhí)行任務(wù),指的是每天的某個(gè)時(shí)間執(zhí)行一項(xiàng)任務(wù)。
比如每天凌晨七點(diǎn)的時(shí)候email發(fā)送一次報(bào)表。
這里首先想到的就是利用 Global.asax 文件來實(shí)現(xiàn), 以下Global文件的內(nèi)容。
<%@ Application Language="C#" %>
<%@ Import Namespace="System.Threading" %>
<script runat="server">
//這里使用靜態(tài)保持對(duì)這處Timer實(shí)例的引用,以免GC
private static System.Threading.Timer timer = null;
protected void Application_Start(object sender, EventArgs e) {
//計(jì)算現(xiàn)在到目標(biāo)時(shí)間要過的時(shí)間段。
DateTime LuckTime = DateTime.Now.Date.Add(new TimeSpan(7, 0, 0));
TimeSpan span = LuckTime - DateTime.Now;
if (span < TimeSpan.Zero) {
span = LuckTime.AddDays(1d) - DateTime.Now;
}
//按需傳遞的狀態(tài)或者對(duì)象。
object state = new object();
//定義計(jì)時(shí)器
timer = new System.Threading.Timer(
new TimerCallback(CertainTask), state,
span, TimeSpan.FromTicks(TimeSpan.TicksPerDay));
}
protected void Application_End(object sender, EventArgs e) {
//結(jié)束時(shí)記得釋放
if (timer != null) { timer.Dispose(); }
}
//這里是指定時(shí)間執(zhí)行的代碼,必須是靜態(tài)的。
private static void CertainTask(object state) {
//這里寫你的任務(wù)邏輯
}
</script>
這里首先想到的就是利用 Global.asax 文件來實(shí)現(xiàn), 以下Global文件的內(nèi)容。
復(fù)制代碼 代碼如下:
<%@ Application Language="C#" %>
<%@ Import Namespace="System.Threading" %>
<script runat="server">
//這里使用靜態(tài)保持對(duì)這處Timer實(shí)例的引用,以免GC
private static System.Threading.Timer timer = null;
protected void Application_Start(object sender, EventArgs e) {
//計(jì)算現(xiàn)在到目標(biāo)時(shí)間要過的時(shí)間段。
DateTime LuckTime = DateTime.Now.Date.Add(new TimeSpan(7, 0, 0));
TimeSpan span = LuckTime - DateTime.Now;
if (span < TimeSpan.Zero) {
span = LuckTime.AddDays(1d) - DateTime.Now;
}
//按需傳遞的狀態(tài)或者對(duì)象。
object state = new object();
//定義計(jì)時(shí)器
timer = new System.Threading.Timer(
new TimerCallback(CertainTask), state,
span, TimeSpan.FromTicks(TimeSpan.TicksPerDay));
}
protected void Application_End(object sender, EventArgs e) {
//結(jié)束時(shí)記得釋放
if (timer != null) { timer.Dispose(); }
}
//這里是指定時(shí)間執(zhí)行的代碼,必須是靜態(tài)的。
private static void CertainTask(object state) {
//這里寫你的任務(wù)邏輯
}
</script>
您可能感興趣的文章:
- 利用Timer在ASP.NET中實(shí)現(xiàn)計(jì)劃任務(wù)的方法
- Asp.Net(C#)自動(dòng)執(zhí)行計(jì)劃任務(wù)的程序?qū)嵗治龇窒?/a>
- asp.net 在客戶端顯示服務(wù)器端任務(wù)處理進(jìn)度條的探討
- asp.net 每天定點(diǎn)執(zhí)行任務(wù)
- asp.net 計(jì)劃任務(wù)管理程序?qū)崿F(xiàn),多線程任務(wù)加載
- C#(asp.net)多線程用法示例(可用于同時(shí)處理多個(gè)任務(wù))
- ASP.NET 計(jì)劃任務(wù)實(shí)現(xiàn)方法(不使用外接程序,.net內(nèi)部機(jī)制實(shí)現(xiàn))
- 詳解免費(fèi)開源的DotNet任務(wù)調(diào)度組件Quartz.NET(.NET組件介紹之五)
- Asp.net ajax實(shí)現(xiàn)任務(wù)提示頁面的簡單代碼
- .NET Core基于Generic Host實(shí)現(xiàn)后臺(tái)任務(wù)方法教程
相關(guān)文章
.net數(shù)據(jù)庫操作框架SqlSugar的簡單入門
這篇文章主要介紹了.net數(shù)據(jù)庫操作框架SqlSugar的簡單入門,幫助大家更好的理解和學(xué)習(xí)使用.net技術(shù),感興趣的朋友可以了解下2021-04-04在asp.net下實(shí)現(xiàn)Option條目中填充前導(dǎo)空格的方法
在asp.net下實(shí)現(xiàn)Option條目中填充前導(dǎo)空格的方法...2007-03-03ASP.net中實(shí)現(xiàn)基于UrlRewrite的防盜鏈功能
這篇文章主要介紹了ASP.net中如何實(shí)現(xiàn)基于UrlRewrite的防盜鏈,需要的朋友可以參考下2014-03-03Asp.Net使用服務(wù)器控件Image/ImageButton顯示本地圖片的方法
Image/ImageButton服務(wù)器控件顯示本地的圖片,實(shí)現(xiàn)思路是數(shù)據(jù)庫中存放了圖片的相對(duì)地址,讀取數(shù)據(jù)庫中的地址,用控件加載顯示圖片。具體實(shí)現(xiàn)步驟大家參考下本文2017-08-08.net實(shí)現(xiàn)網(wǎng)站用戶登錄認(rèn)證
本文給大家介紹的是.net實(shí)現(xiàn)網(wǎng)站用戶登錄認(rèn)證的方法和實(shí)例,都非常的簡單實(shí)用,需要的小伙伴可以參考下。2015-11-11詳解ASP.Net Core 中如何借助CSRedis實(shí)現(xiàn)一個(gè)安全高效的分布式鎖
這篇文章主要介紹了ASP.Net Core 中如何借助CSRedis實(shí)現(xiàn)一個(gè)安全高效的分布式鎖,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04Asp.net?core?使用SignalR推送消息過程詳解
ASP.NET?Core?SignalR?是一個(gè)開放源代碼庫,可用于簡化向應(yīng)用添加實(shí)時(shí)?Web?功能。?實(shí)時(shí)?Web?功能使服務(wù)器端代碼能夠?qū)?nèi)容推送到客戶端,本文重點(diǎn)給大家介紹Asp.net?core?使用SignalR推送消息,感興趣的朋友一起看看吧2022-03-03