首页 > 编程语言 >C# task和timer实现定时操作

C# task和timer实现定时操作

时间:2023-03-17 14:36:44浏览次数:48  
标签:定时器 C# timer task 线程 操作

C# task和timer实现定时操作

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,task,线程,操作
From: https://www.cnblogs.com/sexintercourse/p/17226681.html

相关文章

  • 【Bug】 Springboot 调用第三方接口报在 "请求目标中找到无效字符。有效字符在RFC 72
    错误信息问题原因tomcat高版本严格按照RFC3986规范解析地址。该规范只允许包含a-zA-Z0-9-_.~以及所有保留字符!*’();:@&=+$,/?#[......
  • 为什么 C# 可能是最好的第一编程语言
    为什么C#可能是最好的第一编程语言 纵观神州大地,漫游中华互联网,我看到很多人关注为什么你应该开始学习JavaScript做前端,而对blazor这样的面向未来的框架有种莫名的......
  • 基于alamouti的STBC空时分组码误码率matlab仿真
    up目录一、理论基础二、核心程序三、测试结果一、理论基础空时分组码是一种在无线通信中使用的技术,用于在多个天线上发送数据流的多个副本,并利用各种接收的数据版本......
  • CTF第九天
    XCTF体验题库:misc_pic_again【原理】图片隐写术【目的】图片隐写术【环境】Windowskali【工具】binwalk,stegsolve.jar【步骤】步骤1:首先下载附件:步骤2:用工具Stegsolv......
  • 从0到1入门Docker(七)配置国内加速器
     配置国内加速器 上篇文章内容是Docker引擎的安装,今天这篇文章来说一下配置国内加速器​​https://blog.51cto.com/u_15485663/6127076​​学习Docker推荐大家可以看动......
  • 误删除/lib64/libc.so.6后的恢复方法
    误删除libc.so.6后所有命令都不能操作了[root@node01lib64]#rm-rflibc.so.6[root@node01lib64]#llls:errorwhileloadingsharedlibraries:libc.so.6:cannotop......
  • idea使用tomcat部署项目失败总结
    情况①:无法访问localhost:8080页面解决办法:https://www.cnblogs.com/lwt280887072/p/16307489.html情况②:artifact项目:warexploded:Errorduringartifactdeployment......
  • BUUCTF-MISC-LSB(stegsolve的一种妙用)
    题目已知是LSB隐写丢入stegsolve,点>,可以看见Redplane0,Greenplane0,Blueplane0上边好像有东西点analyse->dataextract,让红绿蓝通道为0,可以看见是png图片点sa......
  • c++prime 6-9知识点摘取
      initializer_list<T>类:https://blog.csdn.net/qunsorber/article/details/122860985     https://blog.csdn.net/qq_36546177/article/details/108763448......
  • Nacos身份认证绕过漏洞复现笔记
    0X00漏洞描述Nacos是一个易于使用的平台,专为动态服务发现和配置以及服务管理而设计。可以帮助您轻松构建云原生应用程序和微服务平台。 Nacos身份认证绕过漏洞(QVD-2......