Multithreading Delphi XE7画布在线程中绘制

Multithreading Delphi XE7画布在线程中绘制,multithreading,delphi,draw,Multithreading,Delphi,Draw,我有一个多线程应用程序,在thread类中有一个FInputImage:VCL.Graphics.TBitmap。我有另一个名为FImageV:VCL.Graphics.Bitmap的图像 检查以下代码: ... FImageV.LoadFromResourceName(HInstance, 'IMAGEH'); ... FInputImage.Canvas.Lock; try FInputImage.Canvas.CopyMode := cmSrcCopy;

我有一个多线程应用程序,在thread类中有一个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作为一个单独的类变量添加,因为它是一个静态图像,但结果是相同的

任何关于为什么会发生这种情况的想法都是受欢迎的


谢谢

也锁定
FImageV
的画布