首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

关于ThreadedTimer,大家

2012-05-11 
关于ThreadedTimer,求助大家!程序里的一个线程ThreadedTimer interval设置为20时,FORM上的控件的事件有时

关于ThreadedTimer,求助大家!
程序里的一个线程ThreadedTimer interval设置为20时,FORM上的控件的事件有时不能响应。但当我的interval设置更大时,效果就很好。矛盾点在于我需要ThreadedTimer进行高速的数据采集,而满足时又会出现响应迟钝的问题。
  比如我现在正在调用一个ThreadedTimer进行数据采集,当我点击菜单栏上的选项时有时会得不到响应,求解决办法。

[解决办法]
你UI操作的函数是在主线程中执行的 所以会造成消息阻塞
[解决办法]
从 ThreadedTimer 这个名称来看,你是采用了线程采集数据,然后通过事件更新界面,
而 delphi 的gui 是单线程方式工作的,所以效率很低,gui 阻塞很容易发生。

你可以用纯的线程方式采样数据,然后通过 PostMessage 方式发送消息到主线程,才能很好解决问题,结构如下:

a thread
while not termined do
begin
alloc a buffer
get data and save to buffer
postmessage with buffer pointer
end;

main program
onmessage()
begin
get data from buffer
show data with tchat
free buffer
end;

另外 TChat 的显示速度也需要测试是否满足要求!!!
[解决办法]

探讨
引用:


線程跟UI交互時做什麼操作了?

当点击“采集”时硬件采集数据并且输出到Chart控件上

热点排行