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

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多,说不定一会儿系统的资源就耗尽了。

时间: 2024-10-05 16:19:31

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

PHP自动执行程序

/****config.php***/ <?php return 1; //需要停止时改成0 ?> /******************/ ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去 $interval=60*30;// 每隔半小时运行 do{ $run = include 'config.php'; if(!$run) die('process

Eclipse保存时自动格式化代码

        使用Eclipse很长时间了,但是Eclipse有好多快捷好用的功能没有使用,现在在广州做项目,好多东西之前只是听过或者是简单的用,只是用到了皮毛,从身边人身上学到了一些东西,从eclipse软件使用开始分享.          eclipse保存时自动格式化代码,只需要在eclipse里设置一下就可以,eclipse自带这个功能,只是默认没有选中,要实现这个功能,只需要选上即可.具体的步骤:windows-->Preferences-->Java --> Editor-

json 对c++类的序列化(自动生成代码)

[动机] 之前写网络协议的时候,使用的是google protobuf,protobuf不但在性能和扩展性上有很好的优势,protoc自动生成c++类代码的工具,这点确实给程序员带来了很多便利. 做后面一项目使用的json格式来传输,然后就萌生了实现像protoc这样的工具,根据json文件来生成c++类代码,并且生成序列化代码,这样在写网络的时候就无需把jsonvalue序列化散落在各处. [思路] 之前写object-c的时候,如果你要对类的序列化,你必须实现NSCoding协议(接口),

ButterKnife的使用以及不能自动生成代码问题的解决

ButterKnife的使用以及不能自动生成代码问题的解决 转载请注明出处:http://www.cnblogs.com/zhengjunfei/p/5910497.html 最近换了个工作刚入职,又赔了配环境(linux),并且根据老大的要求看了一些相关的知识点,其中在用到有个工具的时候与到了一些奇葩的问题,就是ButterKnife的不能自动生成代码的问题,查了好多资料和博客才查到,现在总结一下,以备同为码农的程序员不时之需. 大家知道在我们android编程的时候,经常会遇到findVie

在linux服务器上装svn版本管理,自动部署代码到项目

在linux服务器上装svn版本管理,自动部署代码到项目 http://bbs.aliyun.com/read/9715.html?spm=5176.7114037.1996646101.1.W3zw3X&pos=1 http://v5sheji.com/archives/setupsvnonlinux.html 1.安装svn服务器端  yum install subversion 从镜像下载安装svn服务器端 中间会提示是否ok,输入y,确认 安装成功提示:.....complete! 依次

myEclipse/Eclipse 自动提示代码?呵呵,来吧!我告诉你

打开Window -> Perferences,并依次展开 Java -> Editor -> Content Assist 找到  auto activation triggers for java   . 会看到只有一个"."存在.表示:只有输入"."之后才会有代码提示,我们要修改的地方就是这里, myEclipse修改方法:把"."改为"abcdefghijklmnopqrstuvwxyz" Eclip

Mybatis 自动生成代码,数据库postgresql

最近做了一个项目,使用Mybatis自动生成代码,下面做一下总结,被以后参考: 一.提前准备: 1.工具类:mybatis-generator-core-1.3.2.jar 2.postgresql驱动:postgresql-9.2-1003-jdbc4.jar 3.xml文件 这些我都上传到了附件上,下载链接:Download 二.XML详解 咱们的核心配置文件:mybatisGeneratorConfig.xml <?xml version="1.0" encoding=&q

MyBatis学习总结_09_使用MyBatis Generator自动创建代码

一.构建一个环境 1. 首先创建一个表: [sql] view plaincopy CREATE TABLE t_user ( USER_ID INT NOT NULL AUTO_INCREMENT, USER_NAME CHAR(30) NOT NULL, USER_PASSWORD CHAR(10) NOT NULL, USER_EMAIL CHAR(30) NOT NULL, PRIMARY KEY (USER_ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf

网页图片自动缩小代码 防止图片撑破表格

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ