C# 执行定时功能与超时功能Helper

该代码示例创建了两个基于System.Timers.Timer的计时器t1和t2,分别输出1111和2222。通过辅助类TimerHelper管理和启动计时器。另外,两个独立线程监控各自计时器,当超过10秒时停止相应计时器并结束程序。程序在所有线程结束时输出示例结束。
摘要由CSDN通过智能技术生成
using System;
using System.Threading;
using System.Timers;

class Program
{
    static void Main(string[] args)
    {
        bool endFlag=false;

        System.Timers.Timer t1 = TimerHelper.CreateTimer(() => { Console.WriteLine("1111"); });

        t1.Start();

        System.Timers.Timer t2 = TimerHelper.CreateTimer(() => { Console.WriteLine("2222"); });

        t2.Start();

        new Thread(()=>
        {
            TimerHelper ti = new TimerHelper();

            ti.UpdateStartTime();

            while (true)
            {
                if (ti.IsTimeOut(10000))
                {
                    t1.Stop();
                    Console.WriteLine("t1,End");
                    break;
                }
            }
        }).Start();


        new Thread(() =>
        {
            TimerHelper ti = new TimerHelper();

            ti.UpdateStartTime();

            while (true)
            {
                if (ti.IsTimeOut(10000))
                {
                    t2.Stop();
                    Console.WriteLine("t2,End");
                    endFlag = true;
                    break;
                }
            }
        }).Start();

        while(true)
        {
            if(endFlag)
            {
                break;
            }
        }

        Console.WriteLine("示例结束");
        Console.ReadKey();

    }

    public class TimerHelper
    {
        DateTime startTime =DateTime.Now;


         public void UpdateStartTime()
        {
            startTime = DateTime.Now;
        }

         public bool IsTimeOut(int timeOut)
        {
            return (DateTime.Now.Subtract(startTime).TotalMilliseconds > timeOut);
        }

        static public System.Timers.Timer CreateTimer(Action action, int interval=1000, bool autoReset=true)
        {
            System.Timers.Timer timer = new System.Timers.Timer();
            timer.Elapsed += (sender, e) => action();
            timer.Interval = interval;
            timer.AutoReset = autoReset;
            return timer;
        }

    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ou.cs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值