假如程序中有个占用cpu时间很长的函数,当它运行的时候,主线程处于阻塞的状态,为什么鼠标还能响应呢,比如说显示沙漏形状。这跟TSCREEN类有关吗?
能否讲讲鼠标的工作机制和TSCREEN类的特点!
for ,while循環內加一句
Application.ProcessMessages;
就能保證鼠标还能响应
显示沙漏形状
Screen.Cursor := crHourGlass;
这个问题我到没有想过,但我想,对此,系统应该有自己的消息处理,也许它的级别比较高!!!还是学习学习!:)!
在函数执行时,鼠标的点击不会立刻响应,但操作系统会把点击的事件存在消息队列里,
等主线程重新获得CPU时间时,就会得到操作系统缓存的消息.
鼠标事件具备应用程序进程的最高级别.
硬件中断。鼠标中断请求级别高于ide硬盘,
程序属于软中断,级别更低了。
system timer IRQ最高。所以时钟快慢最不受影响。