Как исправить, изображения, загруженные в многопоточность, иногда не отображаются в форме - PullRequest
0 голосов
/ 04 апреля 2019

В моей программе просмотра манги я пытаюсь загрузить большое количество изображений (около 200), я пытаюсь загрузить эти изображения в anonymous thread, и когда загрузка заканчивается, я вызываю Thread.synchronize, это работает нормально, но в некоторыхслучаи, когда я продолжаю видеть некоторые изображения, не нарисованные в форме (я думаю, они загружены, потому что я вижу информацию об изображении), как я могу решить эту проблему?

Эта проблема возникает только в multi thread, поэтому ярешил установить изображение видимым в false и затем в конце загрузки внутри Thread.synchronize повернуть видимое в true, я надеялся, что это приведет к некоторому обновлению или перерисовке, но упомянутая проблема состоит в

TThread.CreateAnonymousThread(procedure
  begin
      for imageIndex := 0 to fileList.count - 1 do
      begin
        filePath := fileList[imageIndex]
        //Please note that mImageList is an array of FMX.Objects.TImage 
        //which was filled when the Form is created (I create 300 TImage 
        //at Form create and later i load the images to the bitmap when 
        //the user clicks on a new directory(Chapter)

        mImageList[imageIndex].beginUpdate();
        try
          mImageList[imageIndex].loadFromFile(filePath);
          mImageList[imageIndex].tagString := filePath;
          mImageList[imageIndex].Scale := mImageScale;
          mImageList[imageIndex].Visible := false;
        except
          mImageList[imageIndex].EmptyBitmaps;
        end;
        mImageList[imageIndex].endUpdate();
      end;

      TThread.Synchronize(nil, procedure
        var
          I: Integer;
        begin
          for I := Low(mImageList) to High(mImageList) do
          begin
            mImageList[I].Visible := true;
          end;
  end);
end).Start;

Я ожидаю, что когда я прокручиваю вниз изображения, загруженные в форму, я вижу их все, и все они правильно отображаются в форме.

...