欢迎来到老马的领地~ 这是“压风式散热底座”发明者的个人网站:)
最近项目中要用到后台线程去不断地刷一个页面,并在内容有改变时产生一个事件,主窗体中再处理.

后台线程使用的是Threading.Timer,这种定时器本身就是基于线程的.我在它的回调过程中触发了事件,外部调用时就出现提示,说是"从不是创建控件'XXX'的线程访问它".

这种情况就要使用委托调用了.

设事件回调过程是event_Message,想设置定时器timerNewMsg的Enabled属性,则代码如下:

private void event_Message(int NewMsgID)
{
    this.Invoke(new Action<Boolean>(SetTimer), true);
}
private void SetTimer(Boolean inVal)
{
    timerNewMsg.Enabled = inVal;
}


目前还不清楚这个Action的开销大不大,但由于我这个项目中此事件的触发并不频繁,几天都难得一次,所以也没所谓了......happy.gif

记录到此.
添加评论

昵称 *

E-mail