ASP.NET 定時(shí)器回調(diào)方法的重入
話不多說(shuō),請(qǐng)看代碼:
using System;
using System.Collections.Generic;
using System.Text;
namespace NET.MST.Sixth.Reenter
{
class Reenter
{
//用來(lái)造成線程同步問(wèn)題的靜態(tài)成員
private static int TestInt1=0;
private static int TestInt2 = 0;
private static object locko = new object();
static void Main(string[] args)
{
Console.WriteLine("System.Timers.Timer 回調(diào)方法重入測(cè)試:");
TimersTimerReenter();
//這里確保已經(jīng)開(kāi)始的回調(diào)方法有機(jī)會(huì)結(jié)束
System.Threading.Thread.Sleep(2 * 1000);
Console.WriteLine("System.Threading.Timer 回調(diào)方法重入測(cè)試:");
ThreadingTimerReenter();
Console.Read();
}
/// <summary>
/// 展示System.Timers.Timer的回調(diào)方法重入
/// </summary>
static void TimersTimerReenter()
{
System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = 100; //100毫秒
timer.Elapsed += TimersTimerHandler;
timer.Start();
System.Threading.Thread.Sleep(2 * 1000); //運(yùn)行2秒
timer.Stop();
}
/// <summary>
/// 展示System.Threading.Timer的回調(diào)方法重入
/// </summary>
static void ThreadingTimerReenter()
{
//100毫秒
using (System.Threading.Timer timer = new System.Threading.Timer
(new System.Threading.TimerCallback(ThreadingTimerHandler), null, 0, 100))
{
System.Threading.Thread.Sleep(2 * 1000); //運(yùn)行2秒
}
}
/// <summary>
/// System.Timers.Timer的回調(diào)方法
/// </summary>
/// <param name="sender"></param>
/// <param name="args"></param>
private static void TimersTimerHandler(object sender,EventArgs args)
{
lock (locko)
{
Console.WriteLine("測(cè)試整數(shù):" + TestInt1.ToString());
//睡眠10秒,保證方法重入
System.Threading.Thread.Sleep(300);
TestInt1++;
Console.WriteLine("自增1后測(cè)試整數(shù):" + TestInt1.ToString());
}
}
/// <summary>
/// System.Threading.Timer的回調(diào)方法
/// </summary>
/// <param name="state"></param>
private static void ThreadingTimerHandler(object state)
{
lock (locko)
{
Console.WriteLine("測(cè)試整數(shù):" + TestInt2.ToString());
//睡眠10秒,保證方法重入
System.Threading.Thread.Sleep(300);
TestInt2++;
Console.WriteLine("自增1后測(cè)試整數(shù):" + TestInt2.ToString());
}
}
}
}
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!
相關(guān)文章
ASP.NET筆記之 ListView 與 DropDownList的使用
本篇文章小編為大家介紹,ASP.NET筆記之 ListView 與 DropDownList的使用。需要的朋友參考下2013-04-04
asp.net實(shí)現(xiàn)調(diào)用帶有輸出參數(shù)的存儲(chǔ)過(guò)程實(shí)例
這篇文章主要介紹了asp.net實(shí)現(xiàn)調(diào)用帶有輸出參數(shù)的存儲(chǔ)過(guò)程,結(jié)合實(shí)例形式分析了前端基于jQuery的ajax調(diào)用及后臺(tái)存儲(chǔ)過(guò)程調(diào)用的相關(guān)技巧,需要的朋友可以參考下2016-03-03
asp.net關(guān)于onpropertychange和oninput事件實(shí)現(xiàn)代碼
文本框,數(shù)據(jù)列表,當(dāng)在文本框中輸入條件時(shí)需要實(shí)時(shí)刷新數(shù)據(jù)列表,而且需要滿足多瀏覽器(IE6.0/7.0/8.0,FireFox,Opera,google chrome,Safair)其功能類似google的智能匹配,我是用asp.net實(shí)現(xiàn)的。2009-11-11
asp.net(c#)Enterprise Library 3.0 下載
asp.net(c#)Enterprise Library 3.0 下載...2007-04-04
.net6?在中標(biāo)麒麟下的安裝和部署過(guò)程
這篇文章主要介紹了.net6?在中標(biāo)麒麟下的安裝部署,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04
[Asp.Net Core]用Blazor Server Side實(shí)現(xiàn)圖片驗(yàn)證碼
這篇文章主要介紹了如何用Blazor Server Side實(shí)現(xiàn)圖片驗(yàn)證碼,文中講解非常詳細(xì),代碼幫助大家更好理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07

