Вы делаете это неправильно, если генерируете растровые изображения внутри любого из методов делегата (рисовать, рисовать ...).
Попробуйте сгенерировать миниатюры только один раз (в рабочем потоке или, возможно, даже во время выполнения, если возможно), и пусть делегат просто отобразит их для соответствующей роли.
Если вы сделаете это во время выполнения, отобразите изображение по умолчанию, пока не создадите миниатюру (как веб-браузеры делают с изображениями, которые еще не загружены).