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. sql中实现split()功能

    http://www.cnblogs.com/yangyy753/archive/2011/11/23/2260618.html 数据库中,总是遇到一些字段内容,想根据某个标识截取一下字符串,可是都想 ...

  2. 编译器错误消息: CS0234: 命名空间“Purple”中不存在类型或命名空间名称“Model”(是否缺少程序集引用?)

    编译错误 “/storeimg”应用程序中的服务器错误. 编译错误 说明: 在编译向该请求提供服务所需资源的过程中出现错误.请检查下列特定错误详细信息并适当地修改源代码. 编译器错误消息: CS023 ...

  3. cocoaPods 去警告

    pod 'ReactiveCocoa', '~> 2.1', :inhibit_warnings => true

  4. 配置webstorm使用supervisor时出现 /usr/bin/env: node: 没有那个文件或目录 解决方法

    配置好supervisor路径后 出现了 启动时出现了 /usr/bin/env: node: 没有那个文件或目录 需要讲.nvm下的node链接到, /usr/bin/目录下 sudo ln -s ...

  5. 【转】group by多个字段理解

    来源:http://uule.iteye.com/blog/1569262 首先group by 的简单说明: group by 一般和聚合函数一起使用才有意义,比如 count sum avg等,使 ...

  6. [AIR] 利用SnapShot.exe实现QQ截屏功能

    主类(可作文档类): package { import flash.display.Bitmap; import flash.display.Sprite; import flash.events.E ...

  7. 我自己做的网站终于上线啦,用tornado做的,求围观 www.yustock.live

    跟股票相关的一个小网站~ www.yustock.live

  8. 根据硬件配置后mapred-site.xml和yarn-site.xml

    机器总共16G内存,sqoop导入数据时大约需要2G左右 mapred-site.xml <configuration> <property> <name>mapr ...

  9. 编码中常用的SQL语法

    蓝色标注的都是比较常见的SQL ====================== 开发中常见的SQL: left join , right join 防止丢弃数据 inner join CASE WHNE ...

  10. php分享表单提交到本页的实例

    我们在做表单提交时,一般都要设置表单的action属性,改属性用于指定表单提交到服务器上的哪个页面进行处理,但为空时,表示提交到本页进行处理,即提交给自己.本文章向大家分享表单提交给本页的实例. 实例 ...