最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小采 时间:2020-11-27 22:35:57
文档

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

ASP.NET 定时器回调方法的重入:话不多说,请看代码: using System; using System.Collections.Generic; using System.Text; namespace NET.MST.Sixth.Reenter { class Reenter { //用来造成线程同步问题的静态成员 private static int TestInt1=
推荐度:
导读ASP.NET 定时器回调方法的重入:话不多说,请看代码: using System; using System.Collections.Generic; using System.Text; namespace NET.MST.Sixth.Reenter { class Reenter { //用来造成线程同步问题的静态成员 private static int TestInt1=


话不多说,请看代码:

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());
 }
 }
 }
}

文档

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

ASP.NET 定时器回调方法的重入:话不多说,请看代码: using System; using System.Collections.Generic; using System.Text; namespace NET.MST.Sixth.Reenter { class Reenter { //用来造成线程同步问题的静态成员 private static int TestInt1=
推荐度:
标签: net asp ASP.NET
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top