我要每隔 10 微秒 处理一个消息,用户界面没有响应了(处理期间鼠标都不能移动了,也就是说程序停不下来了),怎么办?(30分)

  • 主题发起人 主题发起人 lixx
  • 开始时间 开始时间
L

lixx

Unregistered / Unconfirmed
GUEST, unregistred user!
我要每隔 10 微秒 处理一个消息,用户界面没有响应了
(处理期间鼠标都不能移动了,也就是说程序停不下来了),怎么办?

如果我把处理间隔设大一点的话,比如 900 微秒,用户界面可以响应,鼠标也挺好使。
可是我必须每10微秒处理一次,我怎么办呢?
 
加一句,让一点时间
application.ProcessMessages;
 
使用线程试一下,10微妙,你想把机器累死呀。
线程中都加入楼上的语句让出CPU时间。
 
是呀,用线程没有?不用线程肯定不行!
 
在线程中应该不用再加application.processmessages了吧。
 
问题是这样的:
我用一个工作线程做了一个高精度的定时器(分辨率为10 微秒),然后发消息给主界面线程
在响应函数里进行画图(实时显示),你们说怎么再让用线程?

(给个思路即可)
 
同意,用多线程。
 
在线程中建立画主界面图形的函数,然后用synchronize方法中调用(如果是对canvas操作
直接调用就可以了,Canvas是线程安全的)。我想没必要再去用消息吧?
画图的函数最好能够快速度完成,如果CPU负载太高,还可以在线程循环中sleep一下。
 
问题是这样的:
给线程传递一个参数(画布),然后将响应函数封装到线程里面,不过我没有测试过!
 
后退
顶部