您好,欢迎来到酷申汽车网。
搜索
您的当前位置:首页ASP.NET 定时器回调方法的重入

ASP.NET 定时器回调方法的重入

来源:酷申汽车网


话不多说,请看代码:

using System;
using System.Collections.Generic;
using System.Text;
namespace NET.MST.Sixth.Reenter
{
 class Reenter
 {
 //用来造成线程同步问题的静态成员
 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 回调方法重入测试:");
 TimersTimerReenter();
 //这里确保已经开始的回调方法有机会结束
 System.Threading.Thread.Sleep(2 * 1000);
 Console.WriteLine("System.Threading.Timer 回调方法重入测试:");
 ThreadingTimerReenter();
 Console.Read();
 }
 /// <summary>
 /// 展示System.Timers.Timer的回调方法重入
 /// </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); //运行2秒
 timer.Stop();
 }
 /// <summary>
 /// 展示System.Threading.Timer的回调方法重入
 /// </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); //运行2秒
 }
 }
 /// <summary>
 /// System.Timers.Timer的回调方法
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="args"></param>
 private static void TimersTimerHandler(object sender,EventArgs args)
 {
 lock (locko)
 {
 Console.WriteLine("测试整数:" + TestInt1.ToString());
 //睡眠10秒,保证方法重入
 System.Threading.Thread.Sleep(300);
 TestInt1++;
 Console.WriteLine("自增1后测试整数:" + TestInt1.ToString());
 }
 }
 /// <summary>
 /// System.Threading.Timer的回调方法
 /// </summary>
 /// <param name="state"></param>
 private static void ThreadingTimerHandler(object state)
 {
 lock (locko)
 {
 Console.WriteLine("测试整数:" + TestInt2.ToString());
 //睡眠10秒,保证方法重入
 System.Threading.Thread.Sleep(300);
 TestInt2++;
 Console.WriteLine("自增1后测试整数:" + TestInt2.ToString());
 }
 }
 }
}

Copyright © 2019- kushenhuo.com 版权所有

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务