Должен ли я разблокировать TBitmap canvas после его блокировки? - PullRequest
0 голосов
/ 29 октября 2018

Я хочу нарисовать локальный TBitmap и вернуть его. Поскольку я вне основного потока, я должен заблокировать холст перед его использованием. ( Насколько потокобезопасен TBitmap )

Должен ли я когда-нибудь разблокировать холст, или деструктор TBitmap сделает это для меня? Безопасно ли разблокировать холст в этой функции после рисования на растровом изображении и снова заблокировать его, когда я хочу прочитать растровое изображение, или можно очистить холст, если я это сделаю?

std::shared_ptr<TBitmap> f() {
    std::shared_ptr<TBitmap> bmp(new TBitmap);
    bmp->Canvas->Lock();
    // draw on bitmap
    return bmp;
}

1 Ответ

0 голосов
/ 31 октября 2018

Как прокомментировал Реми:

Растровый деструктор НЕ разблокирует холст для вас. Если вы явно заблокировали его, вы должны явно разблокировать его. И да, как только вы разблокируете холст, основной поток пользовательского интерфейса может свободно очищать растровые ресурсы.

...