如何从不同的线程/类启用计时器

Iva*_*nov 4 c# timer winforms

原帖:如何从C#中的另一个类访问一个计时器

我尝试了一切.

-事件

-Invoke无法完成,因为Timers没有InvokeRequired属性.

- 公共/内部财产

没有任何工作,代码正在执行,timer.Enabled属性被设置为"true",但它没有Tick.If我调用事件或只是在非静态方法中从表单类更改属性 - 它确实打勾和工作.

我从来不知道这会花费我一天的时间,甚至可能更多地获得如何使用体面的计时器.

如果没有办法做到这一点,还有什么我可以使用的与计时器类似的工作(延迟,启用/禁用)?

Dav*_*d M 8

如果需要多线程支持,则应该使用System.Timers命名空间中的Timer类,而不是WinForms Timer控件.有关更多信息,请查看WinForms Timer控件的MSDN文档:

http://msdn.microsoft.com/en-us/library/system.windows.forms.timer.aspx


Sei*_*bar 6

您不需要检查InvokeRequiredControl iteself,您可以检查类的属性,例如:

if (this.InvokeRequired) 
{ 
    BeginInvoke(new MyDelegate(delegate()
    {
        timer.Enabled = true;
    }));
}
Run Code Online (Sandbox Code Playgroud)