当前位置: 首页 > news >正文

哪个网站买域名便宜长沙做网站最好的公司有哪些

哪个网站买域名便宜,长沙做网站最好的公司有哪些,网站流程图设计工具,做网站诈钱.NET的FCL中提供了几个计时器#xff0c;大多数初学者都不清楚他们有什么不同#xff0c;那我们这节来剖解一下每个计时器的本质#xff1a;1.System.Threading.Timer如果在一个线程池上执行一个定时的周期性的后台线程任务他是最好的选择#xff0c;这个类是和线程池相关联….NET的FCL中提供了几个计时器大多数初学者都不清楚他们有什么不同那我们这节来剖解一下每个计时器的本质1.System.Threading.Timer如果在一个线程池上执行一个定时的周期性的后台线程任务他是最好的选择这个类是和线程池相关联的它告诉线程池(ThreadPool)在指定的时间执行指定的方法2.System.Timers.Timer这个类是对System.Threading.Timer类的封装所以他两本质上是相同在这里推荐使用System.Threading.Timer计时器3.System.Windows.Forms.Timer这个计时器经常和Window窗体一块使用而且这个单线程处理的从放入消息队列再到提取执行回调都是一个线程完成4.Windows.UI.Xaml.DispatcherTimer这个类的本质就是System.Windows.Forms.Timer微软设计目的是被用在Windows Store5.System.Windows.Threading.DispatcherTimer这个类和System.Windows.Forms.Timer本质是相同的但是这个类用在WPF中我们以System.Threading.Timer为例来介绍一下推荐大家在项目中用这个计时器。我们可以看出有4个构造函数我们分别讲解一下每个参数的用途1、callback表示由线程池线程回调的方法他是一个委托定义如下public delegate void TimerCallback(object state);2、state 参数表示每次调用回调方法时传递的参数如果没有则为null3、dueTime表示在调用回调方法之前等待多少毫秒4、period表示调用callback的时间间隔我们在做开发的时候会遇到一种场景当我们一个回调方法执行时间period 设置的时间就会导致上一个方法没有执行完线程池就会新启动一个线程执行相同的方法这样会产生多个线程同时执行一个方法如何解决呢我们可以在初始化Timer的时候给period参数设置为Timeout.Infinite在回调方法中再次调用Timer.Change(3000,Timeout.Infinite) 并把peroid参数再次设置为Timeout.Infinite下面代码我们对Timer进行了简单封装:public class SafeTimer : IDisposable {#region Fieldsprivate Timer innerTimer;private TimerCallback safeCallback null!;private TimerCallback originalCallback null!;private int syncPoint;private ManualResetEvent originalCallbackCompleteEvent new ManualResetEvent(true);#endregion#region Constructorspublic SafeTimer(TimerCallback callback){InitializeCallback(callback);innerTimer new Timer(safeCallback);}public SafeTimer(TimerCallback callback, object state, long dueTime, long period){InitializeCallback(callback);innerTimer new Timer(safeCallback, state, dueTime, period);}public SafeTimer(TimerCallback callback, object state, uint dueTime, uint period){InitializeCallback(callback);innerTimer new Timer(safeCallback, state, dueTime, period);}public SafeTimer(TimerCallback callback, object state, TimeSpan dueTime, TimeSpan period){InitializeCallback(callback);innerTimer new Timer(safeCallback, state, dueTime, period);}public SafeTimer(TimerCallback callback, object state, int dueTime, int period){InitializeCallback(callback);innerTimer new Timer(safeCallback, state, dueTime, period);}#endregion#region Private methodsprivate void InitializeCallback(TimerCallback callback){originalCallback callback;safeCallback new TimerCallback(NonReentryCallback);}private void NonReentryCallback(object? state){//set syncPoint to 1 if the original value is 0. syncPoint1 indicates a method is executing.if (Interlocked.CompareExchange(ref syncPoint, 1, 0) 0){originalCallbackCompleteEvent.Reset();try{originalCallback(state);}catch { }finally{originalCallbackCompleteEvent.Set();Interlocked.Exchange(ref syncPoint, 0);}}}#endregion#region Public methodspublic bool Change(long dueTime, long period){return innerTimer.Change(dueTime, period);}public bool Change(int dueTime, int period){return innerTimer.Change(dueTime, period);}public bool Change(TimeSpan dueTime, TimeSpan period){return innerTimer.Change(dueTime, period);}public bool Change(uint dueTime, uint period){return innerTimer.Change(dueTime, period);}public void Stop(){innerTimer.Change(Timeout.Infinite, Timeout.Infinite);originalCallbackCompleteEvent.WaitOne();}public bool Stop(int milliseconds){innerTimer.Change(Timeout.Infinite, Timeout.Infinite);return originalCallbackCompleteEvent.WaitOne(milliseconds);}#endregion#region IDisposable Memberspublic void Dispose(){innerTimer.Dispose();}#endregion }我们做个简单的Demo来做个测试internal class Program {private static SafeTimer safeTimer null!;static void Main(string[] args){safeTimer  new SafeTimer(WriteLine, string.Empty, 2000, Timeout.Infinite);Console.ReadLine();}public static void WriteLine(object? state){Thread.Sleep(3000);Console.WriteLine(Hello DateTime.Now.ToString(yyyy-MM-dd hh:mm:ss fff));safeTimer.Change(2000, Timeout.Infinite);} }运行结果如下我们看到执行是按照线性执行没有并行执行达到我们预期效果本质上是将任务调用ThreadPool.QueueUserWorkItem将任务放到线程池中执行这节就到这里希望对各位有收获。
http://www.yutouwan.com/news/67051/

相关文章:

  • 东莞app培训网站建设查询建设公司业绩网站
  • 公司网站域名主机dw网页设计代码模板源代码
  • 在线视频教学网站建设360优化大师历史版本
  • 山东省建设厅教育网站wordpress登陆post
  • 英语教学网站建设意见旅游手机网站开发
  • 网站有必要使用伪静态么公司里面有人员增减要去哪个网站做登记
  • 网站空间购买哪个好河北伟创网络技术有限公司
  • 建app网站要多少钱泰安市房产交易中心官网
  • 网站建设公司用5g软件开发工程师的薪资待遇
  • 大学生做兼职的网站有哪些网站后台管理代码
  • 手机网站发布页电脑版网上商城程序
  • 如何在个人电脑用源码做网站六盘水南宁网站建设
  • 网站微信付款调用建设网站应该加什么服务器
  • 做网站需要买域名吗wordpress多站点无法访问
  • 织梦网站地图制作教程哪里可以学ps软件网课
  • 宜兴市网站建设泉州网站建设方案服务
  • 玉树网站建设公司精美个人网站
  • 域名注册网站查询安卓app是用什么语言开发的
  • 家具建设企业网站请人开发一个网站需要多少钱
  • 太原seo软件网站优化人员通常会将目标关键词放在网站首页中的
  • 门户网站开发文档钢筋网片每平米重量
  • 一个高端的网站设计什么网站可以做线上邀请函
  • 天然气集团有限公司原副总经理广州中小企业seo推广运营
  • 留言网站建设上海软件开发公司排名
  • 公司做网站提供资料找客网怎么样
  • 有网站源程序怎么做网站后台北京seo顾问
  • 绍兴专业做网站企业咨询合同
  • 网站建设感想招商局网站建设方案
  • 做网站平面一套多少钱苏州新区网站建设
  • dw如何用表格来做网站火车头采集器和wordpress