【问题标题】:Force timer's tick (including async behavior)强制计时器的滴答声(包括异步行为)
【发布时间】:2010-05-06 07:47:40
【问题描述】:

在我的应用程序中,我有一个计时器,它每隔几分钟检查一次来自服务器的配置更新。

配置检索是一个相当耗时的过程,所以我想强制计时器的“Tick”事件,但我不能只调用 timer_tick(bla,bla,bla),因为它会同步执行。

有没有一种简单的方法可以强制计时器“滴答”(不创建新线程)? 该行为应该“重置”计时器的剩余时间(因此,如果最初计时器设置为 2 分钟间隔并且已经过去 1 分钟 - 在强制“滴答”之后 - 计时器将再次开始计数 2 分钟)

【问题讨论】:

    标签: c# asynchronous timer execution


    【解决方案1】:

    更改它的超时值。

    【讨论】:

    • 谢谢老兄...我创建了一个简单的应用程序来检查在计时器运行时更​​改超时的影响,并且效果很好。我所做的是将计时器的间隔更改为 1(可能的最小值)、Thread.Sleep(1),并将间隔重置为其原始值......就像一个魅力
    【解决方案2】:

    在您的消费过程中,您的第一步只是禁用计时器,最后一步是再次启用它。

    也许您只是在像这样调用长时间运行的进程之前和之后将这个禁用和启用:

    timer.Enabled = false;
    LongRunningSyncProcess();
    timer.Enabled = true;
    

    【讨论】:

    • LongRunningSyncProcess() 将同步运行 - 正是我不想要的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-03
    • 2013-11-26
    相关资源
    最近更新 更多