为什么不能同时在两个PaintBox中作图???(0分)

P

pzhiwyj

Unregistered / Unconfirmed
GUEST, unregistred user!
我建立了两个线程,每一个线程对应一个PaintBox ,因为涉及到VCL组件,故用Synchronize
来调用作图函数,为什么只有先调用的那个线程起作用呢???
 
你用Synchronize自然不能同时做。去掉试试吧。尽管这样线程不安全。
 
去掉Synchronize不好。
可以考虑把绘图操作划分为很多个小操作,然后在子线程中用Synchronize执行这些小操作,这样看起来也是同时在绘图的
 
对于vcl中的图形对象来说,可以让多个线程同时访问,所以用不用Synchronize没有关系。检查一下你的两个子线程是如何建立的。我觉得问题是在这里!
 
在delphi 中有一个demo叫ThrdDemo的,里面就用了3个PaintBox。
 
Synchronize调用的一个过程中,对两个PaintBox进行绘画就行了
 
你把源码贴出来嘛。
按你的叙述,应该两个都起作用的。
 
别用 Synchronize
 
TFont, TPen, TBrush, TBitmap, TMetafile (仅适用VCL), TDrawing (仅适用CLX), or TIcon 都是线程安全的,不需要从主线程中访问,Canvas对象也可以不用Synchronize调用,操作前调用Lock方法,操作完后调用Unlock方法。
 
顶部