我有一个多线程的应用程序,在线程类中有一个FInputImage:VCL.Graphics.TBitmap。我有另一个名为FImageV的图像:VCL.Graphics.Bitmap。
检查以下代码:
...
FImageV.LoadFromResourceName(HInstance, 'IMAGEH');
...
FInputImage.Canvas.Lock;
try
FInputImage.Canvas.CopyMode := cmSrcCopy;
FInputImage.Canvas.Brush.Color := clRed;
FInputImage.Canvas.Rectangle(SR);
FInputImage.Canvas.StretchDraw(SR, FImageV);
finally
FInputImage.Canvas.Unlock;
end;
如果我提交更多图像以便运行多个线程,一段时间后StretchDraw什么也不做,它就会消失。我只看到用矩形(SR)绘制的红色矩形。
这是随机发生的。在线程内创建并释放所有对象。我还尝试将FImageH添加为单独的类变量,因为它是静态图像,但结果是相同的。
任何有关为何发生这种情况的想法都会受到欢迎。
谢谢!
答案 0 :(得分:4)
也锁定FImageV
的画布。