Вы можете организовать рендеринг по частям и после обработки каждого чанка вернуть управление системе. Существует много возможных реализаций, например, запустить таймер, который запускает событие каждые 500 мс, и обрабатывать небольшой фрагмент набора данных в обработчике событий.
В качестве бонуса обработка большого набора данных кусками позволит вам предоставить пользователю возможность легко отменить рендеринг.