C#中,定时器,或者叫作间隔器,每隔一段时间执行一个操作。

1.Timer本身就是多线程

C#中为不同场合下使用定时器,提供了不同的Timer类,在asp.net中一般使用System.Timers.Timer。

这个类也很简单,在微软官方文档可以查看如何使用。

C#的timer,本身就封装了线程的操作,所以使用timer不用考虑再开一个线程,它已经是了。

2.Task实现定时器

我们可以使用task来完成程序中的异步操作,也可以使用task来制作一个定时器。

Task.Run(() =>

{

while (true)

{

Console.WriteLine(1);

Thread.Sleep(1000);

}

});

这代码很好理解,开启一个线程,在线程里面永远循环,每次打印1后该线程停1秒后继续判断while(true),为真后继续执行。

3.定时器的使用场合

一般使用定时器,都是想要多次执行的,而不是执行一次之后就销毁这个定时器,所以我们只考虑定时器多次执行的情况。

定时器使用的两种场合:

(1)隔段时间操作一次。比如写日志,隔个0.5秒写一次。

(2)到点执行。这和你间隔的时间有关,并且需要在定时器中进行判断,比如你08:00执行一次操作,你的时间间隔是60秒,那你可以在定时器中判断DateTime.Now>=08:00&&DateTime.Now<08:01,这样就能保证你每天只在8点到8点1分内执行操作,每天只执行一次。

要注意,没有绝对的准时,定时器的精准度是和机器有关的。

4.数据安全问题

定时器时通过多线程实现的自然有关于多线程的数据安全问题。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

c# timer 销毁_C# task和timer实现定时操作相关推荐

  1. C# task和timer实现定时操作

    C#中,定时器,或者叫作间隔器,每隔一段时间执行一个操作. 1.Timer本身就是多线程 C#中为不同场合下使用定时器,提供了不同的Timer类,在asp.net中一般使用System.Timers. ...

  2. java quartz timer_java定时任务实现的几种方式(Timer、Spring Task、Quartz)

    Timer JDK自带的Timer类,允许调度一个TimerTask任务. Demo: /*** Timer测试类 */ public classTimerDemo { public static v ...

  3. 【Android 异步操作】Timer 定时器 ( Timer 与 TimerTask 基本使用 | Timer 定时器常用用法 | Timer 源码分析 )

    文章目录 一.Timer 定时器基本使用 二.Timer 定时器常用用法 三.Timer 源码分析 四.Timer 部分源码注释 五.源码及资源下载 参考文档 : Timer 定时器 API 文档 T ...

  4. 定时器Timer(一)—— 定时器Timer的使用

    目录 1.方法schedule(TimerTask task,Date time)的测试 1.执行任务的时间晚于当前时间:在未来执行的效果 2.计划时间早于当前时间:提前运行的效果 3.多个Timer ...

  5. java timer cron_Java之旅--定时任务(Timer、Quartz、Spring、LinuxCron)

    在Java中,实现定时任务有多种方式.本文介绍4种.Timer和TimerTask.Spring.QuartZ.Linux Cron. 以上4种实现定时任务的方式.Timer是最简单的.不须要不论什么 ...

  6. java timer线程结束_Java线程Timer定时器用法详细总结

    定时/计划功能主要使用的就是Timer对象,它在内部还是使用多线程的方式进行处理,所以它和线程技术还是有非常大的关联. Timer类主要作用就是设置计划任务,但封装任务的类却是TimerTask类.T ...

  7. C#学习常用类(1003)---Timer类(System.Timers.Timer)

    Timer类: 在设定的间隔之后生成事件,带有生成重复事件的选项. 若要浏览此类型的 .NET Framework 源代码,请参阅引用源. 命名空间:                   System ...

  8. System.Timers.Timer与System.Windows.Forms.Timer 区别

    根据msdn解释:System.Threading.Timer 是一个简单的轻量计时器,它使用回调方法并由线程池线程提供服务. 不建议将其用于 Windows 窗体,因为其回调不在用户界面线程上进行. ...

  9. System.Timers.Timer 嵌套 System.Windows.Forms.Timer的问题

    如题"System.Timers.Timer 嵌套 System.Windows.Forms.Timer的问题",最近在项目中在类uc_Map中启用了System.Timers.T ...

  10. Flink程序 Timer实现定时操作

    Flink程序中 Timer实现定时操作 有时候,我们在计算任务中需要使用到定时器来帮助我们处理业务,例如 订单的自动结算?自动好评? 定时收集?等等- 但需要注意的 我们无法为计算任务灵活的配置CR ...

最新文章

  1. Ubuntu14.04 python 2.7环境下安装Scrapy
  2. 数据如何从HBase读到MR
  3. OpenGL ES着色器语言之语句和结构体(官方文档第六章)内建变量(官方文档第七、八章)...
  4. Linux源码手机,Linux操作系统源代码详细分析
  5. C# 子类实例化基类 基类使用不了子类的方法_C#学习笔记09--构造方法/析构方法/继承/多态/封装...
  6. linux之变量的设置与显示
  7. python如何运行一个python程序_在python中,如何运行一个命令行程序,它在发送Ctrl+D之前不会返回...
  8. 收藏收藏:工作用了很久的自主开发的Sql Server代码生成器,我开源了(.NET Winform)
  9. 腾讯PCG光影研究室招聘计算机视觉算法/实习生
  10. 百度Android在线语音识别SDK用法
  11. java day65【视图[应用] 、索引[应用] 、pl/sql 基本语法[了解] 、存储过程[理解] 、 存储函数[理解]、 触发器[理解]、Java 程序调用存储过程[应用]】...
  12. 1.LVS 安装简介
  13. Web 探索之旅 | 第二部分第四课:数据库
  14. 每月物品消耗统计表_预算统计表- .doc
  15. 解决 “数据库 'tempdb' 的日志已满。请备份该数据库的事务日志以释放一些日志空间” 的问题...
  16. 平面几何----用角平分线逆定理证明阿氏圆定理
  17. C++ 建立一个被称为sroot()的函数,返回其参数的二次方根.重载sroot()3次, 让它返回整数, 长整数, 与双精度的二次方根(计算二次方根时, 可以使用标准库函数sqrt())
  18. Oauth2认证图解
  19. c语言做游戏音效,游戏背后辛苦付出的劳动者—游戏音效师
  20. python中spider的用法_Scrapy Spider类的用法

热门文章

  1. matlab符号运算实验,数学实验6--Matlab符号运算.pptx
  2. centos mysql无法启动 sock_CentOS通过yum安装MariaDB(MySQL)无法启动服务或者找不到mysql.sock...
  3. 力扣-1290 二进制链表转整数
  4. (转)收集 Spring Boot 相关的学习资料,Spring Cloud点这里 重点推荐:Spring Boot 中文索引...
  5. HotSpot VM运行时02---VM生命周期
  6. Nginx 高级配置
  7. 2016-6-4 项目结构调整完成
  8. C/C++中struct/union/class内存对齐
  9. AS3 JPEG Encoder应用:从Flash中保存图片
  10. .NET 中的序列化