Доброго время суток, котятки! Пишу софт, который обрабатывает изображения в стороннем потоке. да да, знаю, нельзя этого делать, но нужно именно так. Наверняка кто-нибудь знает как это делать потокобезопасно. Сейчас все работает, но после нескольких итераций он подвисает и не работает дальше. Примерный код:
Так создаю поток:
DWORD id;
HANDLE thread = CreateThread(NULL, 0U, MainThread, (LPVOID)td1,THREAD_PRIORITY_NORMAL, &id);
CloseHandle(thread);
Так создаю bitmapы и тд:
Vcl::Graphics::TBitmap *bmp1 = new Vcl::Graphics::TBitmap();
Vcl::Graphics::TBitmap *bmp2 = new Vcl::Graphics::TBitmap();
TPngImage *png = new TPngImage();
TJPEGImage *jpeg = new TJPEGImage();
Rxgif::TGIFImage *gif = new Rxgif::TGIFImage();
TPicture *pic = new TPicture();
TPicture *picTrash = new TPicture();
Так вот работаю с ними:
bmp1->Canvas->Lock();
bmp2->Canvas->Lock();
bmp2->Canvas->FillRect(bmp2->Canvas->ClipRect);
bmp2->Canvas->Draw(0,0,bmp1);
bmp2->Canvas->Unlock();
bmp1->Canvas->Unlock();
Главная форма во время работы дико подвисает, и проц грузит почти на 100%, но есть же программы, которые быстро и без зависов обрабатывают изображения.