c#实现每隔规定时间自动执行程序代码

 在一般的项目中我们很少用到c#实现每隔规定时间自动执行程序代码,但是如果你经历的项目多,或者应用程序做的比较多的话,c#实现每隔规定时间自动执行程序代码就用的比较多。像玩网游做挂机定时发布广告这样的项目中就用到了c#实现每隔规定时间自动执行程序代码。
 
25亿企业网站管理系统在多年运营seo方面,就用到了自动执行代码,现在给大家讲解一下c#实现每隔规定时间自动执行程序代码。
 
在实践应用中我们可以用三种方法来实现。
 
//方法一:调用Thread线程执行方法,在执行方法中实现死循环,在每个循环Sleep里设定时间 
Thread thread25yi = new Thread(new ThreadStart(obj.MethodTimer1)); 
thread25yi.Start(); 
void MethodTimer1() 
while (true) 
Console.WriteLine(DateTime.Now.ToString() + "_" + thread25yi.CurrentThread.ManagedThreadId.ToString()); 
thread25yi.CurrentThread.Join(100);//阻止设定时间 
 
 
方法二:使用System.Timers.Timer类 
System.Timers.Timer t25yi = new System.Timers.Timer(100);//实例化Timer类,设置时间间隔为100毫秒
t25yi.Elapsed += new System.Timers.ElapsedEventHandler(obj.MethodTimer2);//当到达时间的时候执行MethodTimer2事件 
t25yi.AutoReset = true;//false是执行一次,true是一直执行
t25yi.Enabled = true;//设置是否执行System.Timers.Timer.Elapsed事件 
while (true) 
Console.WriteLine("test_" + Thread.CurrentThread.ManagedThreadId.ToString()); 
Thread.Sleep(100); 
void MethodTimer2(object source, System.Timers.ElapsedEventArgs e) 
Console.WriteLine(DateTime.Now.ToString() + "_" + Thread.CurrentThread.ManagedThreadId.ToString()); 
}
   
 
方法三:使用System.Threading.Timer  
System.Threading.Timer threadTimer = new System.Threading.Timer(new System.Threading.TimerCallback(obj.MethodTimer3), null, 0, 100); 
while (true) 
Console.WriteLine("test_" + Thread.CurrentThread.ManagedThreadId.ToString()); 
Thread.Sleep(100); 
}  
void MethodTimer3(Object state) 
Console.WriteLine(DateTime.Now.ToString() + "_" + Thread.CurrentThread.ManagedThreadId.ToString()); 
Timer构造函数参数说明: 
Callback是一个 TimerCallback 委托,表示要执行的方法。 
State是一个包含回调方法要使用的信息的对象,或者为空引用(Visual Basic 中为 Nothing)。 
dueTime是调用 callback 之前延迟的时间量(以毫秒为单位),指定 Timeout.Infinite 以防止计时器开始计时。指定零 (0) 以立即启动计时器。 
Period是调用 callback 的时间间隔(以毫秒为单位),指定 Timeout.Infinite 可以禁用定期终止。
 
上述方法中用timer有一个弊端,就是当timer间隔时间内,事件没执行完,timer就会新建一个线程,从头开始执行这个事件,而上一个线程继续执行,这样就会出现,系统中线程n多,说不定一会儿系统的资源就耗尽了。

c#实现每隔规定时间自动执行程序代码的更多相关文章

  1. C# 自动运行代码 (创建windows 服务的形式 )

    本文转载自:http://blog.csdn.net/csethcrm/article/details/17917721 1.      新建项目 1.1 右键解决方案 – 添加 – 新建项目 1.2 ...

  2. windows本地自动集成代码+SSH服务器配置

    在windows环境下使用Jenkins自动集成代码 描述: 局域网电脑A是本地服务器,安全win7系统,安装了Jenkins:现在想让A成为测试服务器,需要隔一段时间从SVN里同步出最新的代码,供客 ...

  3. web容器启动后自动执行程序的几种方式比较

    1.       背景 1.1.       背景介绍 在web项目中我们有时会遇到这种需求,在web项目启动后需要开启线程去完成一些重要的工作,例如:往数据库中初始化一些数据,开启线程,初始化消息队 ...

  4. mybatis generator maven插件自动生成代码

    如果你正为无聊Dao代码的编写感到苦恼,如果你正为怕一个单词拼错导致Dao操作失败而感到苦恼,那么就可以考虑一些Mybatis generator这个差价,它会帮我们自动生成代码,类似于Hiberna ...

  5. java如何在eclipse编译时自动生成代码

    用eclipse写java代码,自动编译时,如何能够触发一个动作,这个动作是生成本项目的代码,并且编译完成后,自动生成的代码也编译好了, java编辑器中就可以做到对新生成的代码的自动提示? 不生成代 ...

  6. Eclipse保存文件时自动格式化代码

    实现效果:Ctrl+S会自动格式化并保存代码. 应用上图所示效果之后,在每次对Eclipse保存的时候都会实现自动格式化代码. 1. Fomated All lines,格式化该文件的所有代码:还是 ...

  7. MyBatis自动生成代码示例

    在项目中使用到mybatis时,都会选择自动生成实体类,Mapper,SqlMap这三个东东. 手头上在用的又不方便,找了下网上,其实有很多文章,但有些引用外部文件时不成功,也不方便,所以重新整理了下 ...

  8. 使用MyBatis Generator自动创建代码

    SSM框架--使用MyBatis Generator自动创建代码 1. 目录说明 使用自动生成有很多方式,可以在eclipse中安装插件,但是以下将要介绍的这种方式我认为很轻松,最简单,不需要装插件, ...

  9. Excel每隔两行自动求和一次怎么操作?

    今天ytkah得到一份数据,要求进行统计分析,由于是原始数据,还没处理过,数据量有点大,如下图所示(Excel每隔两行自动求和),每天的数字由两项组成,男生的人数.消费值和女生的人数和消费值,数字都在 ...

随机推荐

  1. CF109 C. Lucky Tree 并查集

    Petya loves lucky numbers. We all know that lucky numbers are the positive integers whose decimal re ...

  2. NeHe OpenGL教程 第十三课:图像字体

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  3. UIView之userInteractionEnabled属性介绍

    来源:http://my.oschina.net/hmj/blog/108002 属性作用 该属性值为布尔类型,如属性本身的名称所释,该属性决定UIView是否接受并响应用户的交互. 当值设置为NO后 ...

  4. 利用Hadoop实现超大矩阵相乘之我见(一)

    前记 最近,公司一位挺优秀的总务离职,欢送宴上,她对我说“你是一位挺优秀的程序员”,刚说完,立马道歉说“对不起,我说你是程序员是不是侮辱你了?”我挺诧异,程序员现在是很低端,很被人瞧不起的工作吗?或许 ...

  5. nginx 均衡负载配置

    nginx详细配置介绍: 参考资料:http://blog.csdn.net/xmtblog/article/details/42295181 配置实例: // nginx服务器虚拟为代理服务器和we ...

  6. Bootstrap配套的js框架

    求几个搭配bootstrap的js框架.实现如表单验证,文件多传下载等等 Bootstrap File Input文件选择控件: PNotify通知插件: ClockPicker时间拾取器: Boot ...

  7. 微信企业号开发--手机删除键keyup事件无效

    $('#input').keyup(function(){}); 其他的按键都是有效的,但是唯独删除按键无效. 以下方法可以解决: $('#input').bind('input propertych ...

  8. JavaScript解耦记

    有两个页面A.B.页面A调用页面B.B页面还通过异步加载方式包含一个javascipt(例如叫:ClassHeaderEvaluation.js)文件.问题场景:A页面通过异步请求方式请求B,并在B的 ...

  9. Redis链接上不的问题

    问题描述: 同样配置的redis及系统环境,在两台服务器(A.B两台服务)上部署,但是其中一台(A),运行一段时间,就链接不上了,从开始运行redis到redis链接不上,这个时间间隔,不一定有时候是 ...

  10. sqoop安装

    环境:Hadoop 2.3.0 sqoop 1.4.5 1.下载并解压sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz (解压完,名字会很长,可以根据需要自己修改下 ...