System.Windows.Forms.Timer在线程中的注意事项

在WinForm中使用System.Windows.Forms.Timer对象,如果是在单线程中使用,则直接设置该对象的Enabled属性值即可启动计时器,但如果是在多线程窗体中在多线程引发的事件中调用计时器,请必须使用委托对象在UI窗体上INVOKE设置计时器Enabled的值,如果不使用INVOKE,则计时器将不会被启动。

委托声明如下:
public delegate void SetTimer(Timer tm,bool enabled);

调用:

void STimer(Timer tm,bool enabled)
        {
            Invoke(new SetTimer(__SetTimer), new object[] { tm,enabled });
        }

        void __SetTimer(Timer tm,bool o)
        {
                        tm.Enabled = o;
        }


原文地址:https://www.cnblogs.com/land/p/1562125.html