C#3种常见的定时器(多线程)

总结以下三种方法,实现c#每隔一段时间执行代码:

方法一:调用线程执行方法,在方法中实现死循环,每个循环Sleep设定时间;

方法二:使用System.Timers.Timer类;

方法三:使用System.Threading.Timer;

using System;
using System.Collections;
using System.Threading;public class Test
{public static void Main(){Test obj = new Test();Console.WriteLine(Thread.CurrentThread.ManagedThreadId.ToString());//方法一:调用线程执行方法,在方法中实现死循环,每个循环Sleep设定时间Thread thread = new Thread(new ThreadStart(obj.Method1));thread.Start();//方法二:使用System.Timers.Timer类System.Timers.Timer t = new System.Timers.Timer(100);//实例化Timer类,设置时间间隔t.Elapsed += new System.Timers.ElapsedEventHandler(obj.Method2);//到达时间的时候执行事件t.AutoReset = true;//设置是执行一次(false)还是一直执行(true)t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件while (true){Console.WriteLine("test_" +Thread.CurrentThread.ManagedThreadId.ToString());Thread.Sleep(100);}//方法三:使用System.Threading.Timer//Timer构造函数参数说明://Callback:一个 TimerCallback 委托,表示要执行的方法。//State:一个包含回调方法要使用的信息的对象,或者为空引用(Visual Basic 中为 Nothing)。//dueTime:调用 callback 之前延迟的时间量(以毫秒为单位)。指定 Timeout.Infinite 以防止计时器开始计时。指定零 (0) 以立即启动计时器。//Period:调用 callback 的时间间隔(以毫秒为单位)。指定 Timeout.Infinite 可以禁用定期终止。System.Threading.Timer threadTimer = new System.Threading.Timer(new System.Threading.TimerCallback(obj.Method3),null, 0, 100);while (true){Console.WriteLine("test_" +Thread.CurrentThread.ManagedThreadId.ToString());Thread.Sleep(100);} Console.ReadLine();}void Method1(){while (true){Console.WriteLine(DateTime.Now.ToString()+ "_" + Thread.CurrentThread.ManagedThreadId.ToString());Thread.CurrentThread.Join(100);//阻止设定时间}}void Method2(object source,System.Timers.ElapsedEventArgs e){Console.WriteLine(DateTime.Now.ToString()+ "_" + Thread.CurrentThread.ManagedThreadId.ToString());}void Method3(Objectstate){Console.WriteLine(DateTime.Now.ToString()+ "_" +Thread.CurrentThread.ManagedThreadId.ToString());}
}

 

转载于:https://www.cnblogs.com/wqtmelo/p/7691501.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/268238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在WORD中插入带圈的数字的序号

在WORD中可以通过插入符号的方式插入带圈的数字1至10,但超过10就没有办法了。常规也够 用了,但情况总有特殊的,如果不够再要插入11以上的怎么办?一般介绍使用“格式→中文版式→带圈字符”功能。但圈和圈内的数字总有不匹配的感觉…

005-JQuery之CSS

CSS位置尺寸CSS css(name|pro|[,val|fn]) :访问匹配元素的样式属性示例: 1 // 获取color样式属性的值 2 $(p).css("color"); 3 // 将所有段落的字体颜色设为红色并且背景为蓝色 4 $("p").css({ color: "#ff0011", backgro…

【NOIP2012】旅行计划

题解 双向链表加倍增。。。 正写着不一定能写对2333 终于写对了。。。 然而我的双向链表和别人的都不一样。。。 瑟瑟发抖。。。 代码 //by 减维 #include<cstdio> #include<iostream> #include<cstring> #include<queue> #include<cstdlib> #in…

扩展巴科斯范式

2019独角兽企业重金招聘Python工程师标准>>> 扩展巴科斯范式 维基百科&#xff0c;自由的百科全书 扩展巴科斯-瑙尔范式(EBNF)是表达作为描述计算机编程语言和形式语言的正规方式的上下文无关文法的元语法符号表示法。它是基本巴科斯范式(BNF)元语法符号表示法的一种…

20100519 学习记录:asp CreateFolder/上传附件

新增一个上传附件的功能。在网上找了一下&#xff0c;基本都是在化境HTTP上传程序基础上改的&#xff0c;灰常感谢这个源代码的开发者&#xff0c;深深鞠躬。不过这个代码要求在上传图片时&#xff0c;输入的文件夹必须是已存在的文件夹&#xff0c;不然就会出错&#xff0c;于…

洛谷P1420 最长连号

题目描述 输入n个正整数&#xff0c;&#xff08;1<n<10000),要求输出最长的连号的长度。&#xff08;连号指从小到大连续自然数&#xff09; 输入输出格式 输入格式&#xff1a; 第一行&#xff0c;一个数n; 第二行&#xff0c;n个正整数&#xff0c;之间用空格隔开。 输…

删除容器docker rm和强制删除容器docker rm -f

显示所有容器 docker ps -a删除容器&#xff0c;运行中的容器不行 docker rm 容器id强制删除容器&#xff0c;运行中的容器也是可以删除的 docker rm -f 容器iddocker rm 删除运行中的容器会报错 Error response from daemon: You cannot remove a running container 8c03b6c4d…

Exchange2007 从零到入门(2)---收件人管理

Exchange2007 从零到入门---收件人管理在上一次的文章中讲到了如何为企业部署安装exchange2007服务器。但是部署完成的服务器还并不能使用。因为现在的服务器中还没有用户。在exchange中&#xff0c;用户被称作为“收件人”&#xff0c;exchange中用户管理的主要任务就是对“收…

测试对bug如何分析和定位

如何去区分一个功能测试工程师的水平高和低&#xff1f; 可以从很多个方面去检查&#xff0c;比如测试的思路&#xff0c; 比如测试用例的覆盖度&#xff1f;&#xff0c;比如测试出bug是否能够定位到根因&#xff1f; 上面说的各个方面都很合理&#xff0c;那我们平常如何如更…

Error response from daemon: You cannot remove a running container 8c03b6c4da31d435bcaf8c4a6c59938c3b

Error response from daemon: You cannot remove a running container 8c03b6c4da31d435bcaf8c4a6c59938c3b668eaff36903b13583329034508135. Stop the container before attempting removal or force remove原因&#xff1a;该容器正在运行中&#xff0c;不能直接删除 方法一…

DNS 错误事件4000 4013

DNS 错误事件4000 4013&#xff0c;无法创建活动目录本身的区域 WINDOWS 2003 DNS服务器无法解析 错误ID 4000 DNS 服务器无法打开 Active Directory。这台 DNS 服务器配置成为这个区域获得并 使用目录中信息并且没有它便不能加载区域。请检查 Active Directory 操作正常并 重新…

Android零基础入门第81节:Activity数据传递

在Android开发中&#xff0c;经常要在Activity之间传递数据。前面也学习了Activity和Intent相关基础&#xff0c;接下来一起来学习Activity的数据传递。 一、简介 通过前面的学习知道&#xff0c;Intent可以用来开启Activity&#xff0c;同样它也可以用来在Activity之间传递数据…

如何快速删除打印机任务

在使用打印机的时候经常回遇到打印机任务栏中的任务总是处于"正在删除"的状态这往往让办公室里的GG MM们等让十几分钟的时间,我在这里告诉大家一个简单快速的方法来快速的删除任务栏中的打印任务.那就是重新启动print spooler服务:1.首先在开始-运行中输入CMD进入DOS…

(转)java内部类详解

本文转自http://www.cnblogs.com/dolphin0520/p/3811445.html&#xff0c;谢谢作者 说起内部类这个词&#xff0c;想必很多人都不陌生&#xff0c;但是又会觉得不熟悉。原因是平时编写代码时可能用到的场景不多&#xff0c;用得最多的是在有事件监听的情况下&#xff0c;并且即…

vue axios

vue axios全攻略 不再继续维护vue-resource&#xff0c;并推荐大家使用 axios 开始&#xff0c;axios 被越来越多的人所了解。本来想在网上找找详细攻略&#xff0c;突然发现&#xff0c;axios 的官方文档本身就非常详细&#xff01;&#xff01;有这个还要什么自行车&#xff…

阶段项目(一)

第四章 网页计算器&#xff08;1&#xff09;前台页面设计&#xff1a;<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />&#xff08;2&#xff09;预览效果&#xff1a;&#xff08;3&#xff09;后台代码编写&#xff1…

9款超绚丽的HTML5/CSS3应用和动画特效

HTML5 现在已经不是很前卫的东西了&#xff0c;越来越多的网站和移动应用都在不断地尝试使用HTML5来更好地优化用户体验。今天我们要分享9款超绚丽的HTML5/CSS3应用和动画特效&#xff0c;这里面有菜单、按钮、图片、Loading加载动画等&#xff0c;一定会有你需要的。 1、CSS3飘…