zoukankan      html  css  js  c++  java
  • 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.数据安全问题

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

  • 相关阅读:
    Jmeter环境搭建
    python基础(四)
    python基础(三)
    python基础(二)
    python基础(一)
    jmeter压测、操作数据库、分布式linux下运行、webservice接口测试、charles抓包
    接口测试及其工具简单使用
    Linux安装jdk
    使用loadrunner监控apcahe
    LoadRunner监控Linux
  • 原文地址:https://www.cnblogs.com/gdpw/p/9208389.html
Copyright © 2011-2022 走看看