如何使用Timer而不是Thread.Sleep每秒做一次工作

时间:2016-10-06 14:18:07

标签: c# timer

我正在关注文档和其他SO帖子,但我收到了错误:

  

RecordKeeper没有重载符合委托ElapsedEventHandler

以下代码。

        ...
        System.Timers.Timer aTimer = new System.Timers.Timer();
        aTimer.Elapsed += Server.RecordKeeper;
        aTimer.Interval = 5000;
        aTimer.Enabled = true;
        ...


        public void RecordKeeper(object sender, ElapsedEventHandler e)
    {
        for (int x = 0; x < record_list.Count; x++)
        {
            record_list[x].TTL = record_list[x].TTL.Add(TimeSpan.FromSeconds(1));
            Console.WriteLine(record_list[x].TTL.ToString());
            if (record_list[x].TTL > TimeSpan.FromSeconds(70))
            {
                RemoveRecord(x);
            }
        }                          
    }

我似乎完全按照This post中的其他示例执行此操作。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

尝试:

public void RecordKeeper(object sender, ElapsedEventArgs e)
{
    for (int x = 0; x < record_list.Count; x++)
    {
        record_list[x].TTL = record_list[x].TTL.Add(TimeSpan.FromSeconds(1));
        Console.WriteLine(record_list[x].TTL.ToString());
        if (record_list[x].TTL > TimeSpan.FromSeconds(70))
        {
            RemoveRecord(x);
        }
    }                          
}

您的RecordKeeper函数签名不正确。