亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

利用Timer在ASP.NET中實現計劃任務的方法

2024-07-10 13:14:38
字體:
來源:轉載
供稿:網友
.NET Framework中為我們提供了3種類型的Timer,分別是:
Server Timer(System.Timers.Timer),Thread Timer(System.Threading.Timer )和Windows Timer(System.Windows.Forms.Timer)。
其中Windows Timer和WinAPI中的Timer一樣,是基于消息的,而且是單線程的。另外兩個Timer則不同于Windows Timer,它們是基于ThreadPool的,這樣最大的好處就是,產生的時間間隔準確均勻。Server Timer和Thread Timer的區別在于,Server Timer是基于事件的,而Thread Timer是基于Callback的。
相比之下Thread Timer更輕量級一些,所以下文主要以Thread Timer為例,講解如何利用Thread Timer在ASP.NET中實現計劃任務。
下面給出一個用Timer實現計劃任務的類:
public class ScheduledTask
{
private static readonly ScheduledTask _ScheduledTask = null;
private Timer UpdateTimer = null;
//間隔時間,這里設置為15分鐘
private int Interval = 15 * 60000;
private int _IsRunning;
static ScheduledTask()
{
_ScheduledTask = new ScheduledTask();
}
public static ScheduledTask Instance()
{
return _ScheduledTask;
}
public void Start()
{
if(UpdateTimer == null)
{
UpdateTimer = new Timer(new TimerCallback(UpdateTimerCallback), null, Interval, Interval);
}
}
private void UpdateTimerCallback(object sender)
{
if(Interlocked.Exchange(ref _IsRunning, 1) == 0)
{
try
{
//此處寫你自己想執行的任務
}
catch(Exception ex)
{
}
finally
{
Interlocked.Exchange(ref _IsRunning, 0);
}
}
}
public void Stop()
{
if(UpdateTimer != null)
{
UpdateTimer.Dispose();
UpdateTimer = null;
}
}
}
首先,注意一下這段:private int _IsRunning;
_IsRunning是一個標志,它代表上一個時間間隔觸發的任務是否運行完成。
為什么我們需要這個_IsRunning標志呢?
因為,如果我們執行的任務時間很長,就可能造成上一個時間段觸發的任務還沒有執行完成,下一個任務又開始了,這樣就會造成重入的問題。為了解決這個問題,我們用_IsRunning作為一個標志,表示上次的任務是否完成了,如果完成了,我們就執行新的任務,如果沒完成就跳過這次的任務繼續執行上次的任務。
具體的邏輯在下面這段代碼中實現:
程序代碼
private void UpdateTimerCallback(object sender)
{
if(Interlocked.Exchange(ref _IsRunning, 1) == 0)
{
try
{
//此處寫你自己想執行的任務
}
catch(Exception ex)
{
}
finally
{
Interlocked.Exchange(ref _IsRunning, 0);
}
}
}
大家看到,上面代碼中用到了Interlocked.Exchange這個方法。該方法的作用是保證多線程下給對象賦值的安全性。因為在多線程下,我們直接給_IsRunning賦值是不安全的,所以在這種情況下Interlocked.Exchange就派上了用場。
說完了ScheduledTask類的實現,下面我們看看如何在ASP.NET中調用這個類。
建議在Application_Start中調用這個類,代碼如下:
程序代碼
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
ScheduledTask.Instance().Start();
}
protected void Application_End(object sender, EventArgs e)
{
ScheduledTask.Instance().Stop();
}
}
OK,以上就是Timer在ASP.NET中的簡單應用,如果有什么說的不對的地方,還請多多指教。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品国产网站地址| 日韩精品中文字幕视频在线| 欧美日韩美女在线| 这里只有精品视频在线| 美女撒尿一区二区三区| 精品久久久免费| 国产成人福利网站| 久久精品亚洲94久久精品| 亚洲视频axxx| 欧美www在线| 久久人人爽国产| 欧美日韩国产丝袜另类| 国产精品久久久久7777婷婷| 国产日韩在线看| 久久久91精品国产一区不卡| 久久99久久99精品免观看粉嫩| 久久精品这里热有精品| 136fldh精品导航福利| 亚洲国产精品女人久久久| 日韩风俗一区 二区| 9.1国产丝袜在线观看| 亚洲精品99久久久久| 岛国精品视频在线播放| 亚洲色图第三页| 日韩av最新在线观看| 97久久精品人人澡人人爽缅北| 日韩精品极品在线观看播放免费视频| 精品电影在线观看| 在线观看国产精品91| 97视频免费观看| 日韩在线观看免费全集电视剧网站| 91国产精品视频在线| 国产精品高清免费在线观看| 国产精品国产三级国产aⅴ9色| 欧美在线日韩在线| 亚洲精品中文字幕有码专区| 欧美最猛黑人xxxx黑人猛叫黄| 亚洲无亚洲人成网站77777| 久久中文字幕在线视频| 欧美一级大胆视频| 久久不射电影网| 亚洲国产精品久久久久秋霞不卡| 久热爱精品视频线路一| 亚洲精品99久久久久中文字幕| 成人黄在线观看| 国产精品高潮呻吟久久av野狼| 7m精品福利视频导航| 国产精品高精视频免费| 中文字幕日韩欧美精品在线观看| 少妇高潮 亚洲精品| 欧美插天视频在线播放| 9.1国产丝袜在线观看| 久久这里有精品视频| 国内精品小视频在线观看| 国产精品成人av在线| 亚洲成年人在线播放| 国产亚洲精品va在线观看| 亚洲黄页视频免费观看| 国产精品久久久久久久av电影| 91精品国产色综合久久不卡98口| 性日韩欧美在线视频| 国产精品久久久久77777| 91精品国产色综合久久不卡98口| 亚洲福利视频免费观看| 国产成人亚洲综合91| 97香蕉久久夜色精品国产| 国产精品久久在线观看| 欧美精品激情在线观看| 尤物tv国产一区| 91精品国产综合久久久久久蜜臀| 九九九久久国产免费| 久久在线观看视频| 欧美疯狂性受xxxxx另类| 亚洲97在线观看| 日韩高清av在线| 欧美成aaa人片免费看| 国产偷国产偷亚洲清高网站| 国产精品吴梦梦| 精品久久久久久中文字幕| 欧美午夜美女看片| 精品国产美女在线| 久热爱精品视频线路一| 欧美孕妇孕交黑巨大网站| 日韩av综合网站| 久久国产精品首页| 国产一区二区成人| 成人久久久久久久| 亚洲已满18点击进入在线看片| 欧美一区二三区| 亚洲美女精品成人在线视频| 国产精品欧美一区二区| 91免费看片在线| 黑人狂躁日本妞一区二区三区| 欧美日韩国产成人在线| 91精品久久久久久久久久| 97精品久久久中文字幕免费| 亚洲综合日韩在线| 亚洲成人av在线播放| 亚洲欧美日韩久久久久久| 国产最新精品视频| 国产精品久久一| 国产精品wwwwww| 欧美日韩国产一区二区| 日韩视频欧美视频| 日韩在线国产精品| 色噜噜久久综合伊人一本| 亚洲电影免费观看高清完整版在线| 亚洲自拍偷拍第一页| 亚洲白拍色综合图区| 在线播放日韩专区| 日韩av中文字幕在线| 色噜噜狠狠狠综合曰曰曰| 亚洲电影免费观看高清完整版在线| 久热在线中文字幕色999舞| 亚洲一区二区三区视频| 久久精品美女视频网站| 国产精品美女午夜av| 九九热精品视频国产| 日韩视频欧美视频| 亚洲激情第一页| 热久久这里只有精品| 色偷偷偷亚洲综合网另类| 精品国产网站地址| 久久影院在线观看| 国产精品一区二区久久国产| 国产精品永久在线| 国产日韩精品综合网站| 国产精品色午夜在线观看| 麻豆成人在线看| 亚洲国产天堂久久综合网| 精品久久久一区二区| 在线丨暗呦小u女国产精品| 亚洲a区在线视频| 久久久亚洲天堂| 亚洲三级 欧美三级| 日韩视频欧美视频| 国产亚洲美女久久| 中文字幕日韩综合av| 亚洲成人网久久久| 亚洲 日韩 国产第一| 亚洲最大av网站| 综合久久五月天| 精品国产乱码久久久久久婷婷| 日韩电影视频免费| 91精品在线看| 亚洲精品wwww| 91午夜理伦私人影院| 国产精品永久免费| 亚洲免费电影一区| 国产精品久久久久久久app| 欧美xxxx14xxxxx性爽| 欧美激情欧美激情在线五月| 欧美激情中文字幕乱码免费| 日韩av最新在线| 国产精品最新在线观看| 日本不卡高字幕在线2019| 中文字幕日韩av综合精品| 色偷偷91综合久久噜噜| 欧美性猛交xxxx富婆弯腰| 深夜福利91大全| 亚洲成av人影院在线观看| 午夜精品久久久久久久99热| 亚洲成人免费在线视频| 亚洲电影免费观看高清完整版在线|