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;
        }


posted @ 2009-09-07 21:19  *王员外*  阅读(655)  评论(0编辑  收藏  举报