欢迎来到老马的领地~ 这是“压风式散热底座”发明者的个人网站:) 本人QQ:80524554,用户群1:562279766
最近项目中要用到后台线程去不断地刷一个页面,并在内容有改变时产生一个事件,主窗体中再处理.
后台线程使用的是Threading.Timer,这种定时器本身就是基于线程的.我在它的回调过程中触发了事件,外部调用时就出现提示,说是"从不是创建控件'XXX'的线程访问它".
这种情况就要使用委托调用了.
设事件回调过程是event_Message,想设置定时器timerNewMsg的Enabled属性,则代码如下:
目前还不清楚这个Action的开销大不大,但由于我这个项目中此事件的触发并不频繁,几天都难得一次,所以也没所谓了......
记录到此.
后台线程使用的是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;
}
{
this.Invoke(new Action<Boolean>(SetTimer), true);
}
private void SetTimer(Boolean inVal)
{
timerNewMsg.Enabled = inVal;
}
目前还不清楚这个Action的开销大不大,但由于我这个项目中此事件的触发并不频繁,几天都难得一次,所以也没所谓了......

记录到此.
添加评论
GB2312 https://www.m5home.com/blog/trackback.php?id=91&encode=gb2312
UTF-8 https://www.m5home.com/blog/trackback.php?id=91&encode=utf-8