本文最后更新于 2024-05-07,文章可能存在过时内容,如有过时内容欢迎留言或者联系我进行反馈。

代码示例

private static System.Timers.Timer aTimer = new System.Timers.Timer();
private static int inTimer = 0;

/// <summary> 设置定时器 </summary>
public static void SetTimer()
{
    //读取配置时间
    try
    {
        aTimer.Interval = 30000; //半分钟触发一次
        aTimer.Elapsed += new System.Timers.ElapsedEventHandler(OnTimedEvent);
        aTimer.AutoReset = true; //每到指定时间Elapsed事件是到时间就触发
        aTimer.Enabled = true; //指示 Timer 是否应引发 Elapsed 事件。
    }
    catch (Exception ex)
    {
		Debug.WriteLine(ex.Message);
        throw;
    }
}
private static void OnTimedEvent(Object source, ElapsedEventArgs e)
{
    //inTimer设置一个标志,表示一个Timer处理正在执行,下一个Timer发生的时候发现上一个没有执行完就放弃
    if (Interlocked.Exchange(ref inTimer, 1) == 0)
    {
		Debug.WriteLine($"数据开始同步时间:{e.SignalTime}");
        SetTimerStart();
        System.Threading.Thread.Sleep(60000); //执行完等待越过当前分钟,使整点内只能进来一次
        Interlocked.Exchange(ref inTimer, 0);
    }
}