0

我在 .net 4.0 中有一个简单的计时器,间隔设置为 1000(= 1 秒)并且启用 = true。要启动我使用的计时器.Start()。到目前为止一切正常。

然后在计时器的情况下,我得到了这个:

private void MyTimerEvent()
{
    myTimer.Stop();
    myTimer.Start();

    //Some other work is done not related to the timer
}

问题是,一旦计时器事件运行一次,它就会停止抛出事件,并且它似乎设置为enabled = false即使在 myTimer.Start(); 之后也是如此。有时。但我根本没有设置enabled = false

我究竟做错了什么?

编辑:System.Windows.Forms.Timer是我使用的那个。

4

2 回答 2

1

如果您调用StopaForms.Timer它只会执行Enabled=False. 与 相同Start。如果您的 Timer 是enabled,则无需调用Start,因为计时器已经在运行。您可以使用 Reflector et al 检查自己:

[TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
    public void Start()
    {
        this.Enabled = true;
    }

    [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
    public void Stop()
    {
        this.Enabled = false;
    }
于 2012-11-16T10:26:17.937 回答
0

我在 init 方法中使用 Start,事件中的 Stop/Start 是将当前计数设置为 0(重新开始),因为该事件可以由另一个回调触发。

那很可能是你的问题。Start如果您正在使用/ ,请不要共享计时器Stop。您可能应该改用队列,而队列又由BackgroundThread.

于 2012-11-16T11:17:01.183 回答