A Picturebox
на самом деле довольно «тяжелый» контроль в том, что он обеспечивает; это может быть неуместным, чтобы использовать здесь. Вы могли бы рассмотреть намного более простое управление контейнером или рисование на поверхности самой формы.
Если вы хотите рассмотреть BackgroundWorker
или любую другую технику с резьбой, помните, что само рисование должно происходить в потоке пользовательского интерфейса; Обойти это невозможно.
Если загрузка изображений с диска является источником задержки, вы можете рассмотреть возможность загрузки изображений в растровое изображение в памяти в другом потоке, а затем сделать сигнал, указывающий, что новый элемент готов к рисованию. Затем вы лишите законной силы поверхность рисования и добавите новый элемент соответствующим образом.
Также; если вы выполняете какое-либо масштабирование изображений, это будет уместно в фоновом потоке - в этом случае самому коду рисования нужно только нарисовать немасштабированный прямоугольник; Использование функциональности GDI + DrawUnscaled для копирования растрового изображения в область точно такого же размера на самом деле довольно быстро.
Чтобы перейти к чему-то более конкретному, например к реальному коду, я бы хотел увидеть код того, как вы это делаете сейчас. Я даже не уверен, что вы «рисуете» изображения в первую очередь, а не просто устанавливаете Picture
/ Image
свойства.