总结以下三种方法,实现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

C#3种常见的定时器(多线程)相关推荐

  1. 【JAVA定时器】四种常见定时器的原理和简单实现

    个人学习笔记分享,当前能力有限,请勿贬低,菜鸟互学,大佬绕道 如有勘误,欢迎指出和讨论,本文后期也会进行修正和补充 前言 定时器顾名思义,即定时触发某个事件,分离开来,即包含三个因素:定时,触发,某个 ...

  2. android 多线程间通信,android实现线程间通信的四种常见方式

    1,通过Handler机制 主线程中定义Handler,子线程发消息,通知Handler完成UI更新,Handler对象必须定义在主线程中,如果是多个类直接互相调用,就不是很方便,需要传递conten ...

  3. Executor框架、ThreadPoolExecutor、3种常见的线程池

    参考:https://blog.csdn.net/javazejian/article/details/50890554 1. Executor框架 为什么需要线程池? 在java中,使用线程来执行异 ...

  4. 千万不要这样写代码!9种常见的OOM场景演示

    <Java虚拟机规范>里规定除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生 OutOfMemoryError 异常的可能,我们本文就来演示一下这些错误的使用场景. 一. Stac ...

  5. JavaScript学习笔记之BOM篇,认识几种常见的浏览器对象

    BOM(Browser Object Document)即浏览器对象模型,顾名思义就是为了控制浏览器的行为而出现的接口.浏览器可以做什么呢?比如跳转到另一个页面.前进.后退等等,程序还可能需要获取屏幕 ...

  6. Dreamwear如何创建javascript_内存管理+如何处理4种常见的内存泄漏

    JavaScript是如何工作的:内存管理+如何处理4种常见的内存泄漏 潮水自会来去,但心志得坚若磐石.即便成不了那根定海神针,也至少不是那随意被拍上岸的野鬼游魂.by 一枚热汤圆 几周前,我们开始了 ...

  7. Java中 9 种常见的 CMS GC 问题分析与解决

    目录 Java中 9 种常见的 CMS GC 问题分析与解决 1. GC 1.1 引言 1.2 概览 2. GC 基础 2.1 基础概念 2.2 JVM 内存划分 2.3 分配对象 2.4 收集对象 ...

  8. 美团技术总结:Java中9种常见的CMS GC问题分析与解决

    1. 写在前面 | 本文主要针对 Hotspot VM 中"CMS + ParNew"组合的一些使用场景进行总结.重点通过部分源码对根因进行分析以及对排查方法进行总结,排查过程会省 ...

  9. 为何大量网站不能抓取?爬虫突破封禁的6种常见方法

    为何大量网站不能抓取?爬虫突破封禁的6种常见方法 在互联网上进行自动数据采集(抓取)这件事和互联网存在的时间差不多一样长.今天大众好像更倾向于用"网络数据采集",有时会把网络数据采 ...

最新文章

  1. 13个Pandas奇技淫巧
  2. Configuration of OpenCV 2.4.7 in VS2012 (X86)
  3. Objective-C设计模式(MVC)的实现,以及协议与委托的运用
  4. 【Java学习笔记十】输入输出流
  5. 如果我是神,我让光速慢一点点,那就没有你
  6. Python输出LOGO图标
  7. 文具用品分类html,中国商品分类.doc
  8. Flex中List自己定义itemrenderer渲染问题的解决
  9. 搜索很久_装了SSD你还需要这个软件才更快,搜索查找文件数据从此不再等待
  10. Mapreduce从HBASE抽取数据,生成搜索下拉服务数据,hadoop jar 调用异常问题解决
  11. CSS设置字间距、行间距、首行缩进
  12. BJFU_数据结构习题_256病毒感染监测
  13. 2021年如何选购华强北AirPods(一次翻车到下车的经历总结的经验)
  14. 简单搭建一个属于自己的视频网站
  15. 2022年济南12行政区高新技术企业补贴政策及认定条件汇总
  16. 缓冲、缓冲区、缓存三者的区别
  17. 发卡小程序源码,自动发卡小程序
  18. kindle运行linux命令,Kindle4: 编译并运行官方linux kernel – v2.6.31
  19. NSIS教程(1): 基础语法
  20. 趣题:奇怪的自然数集划分

热门文章

  1. 关于 php mysql pdo cannot find driver 解决方案
  2. 重构机房收费系统(二)
  3. java调用oracle 存储过程 以及游标使用
  4. 尝试修改源码需要用到git存一下
  5. Jmeter之BeanShell
  6. 可能是目前最详细的Redis内存模型及应用解读
  7. Node.js学习之路24——Express框架的app对象
  8. MySQL日志分类及性能分析你应该知道的知识
  9. bootstrap-表单控件——单选按钮水平排列
  10. py文件转exe时包含paramiko模块出错解决方法