Одной из функций, над которыми я работаю, является возможность перетаскивать объекты из главного окна и помещать их в проводник Windows в виде файлов.
Для этого мы переопределяем COleDataSource::OnRenderGlobalData()
и, когда формат CF_HDROP
, мы сохраняем каждый объект в виде файла.Это прекрасно работает, когда количество объектов мало.
Однако, поскольку мы сейчас работаем над поддержкой количества объектов уровня предприятия, мы наблюдаем большие задержки, иногда приводящие к зависаниям или возможным сбоям, когда пользователь пытается перетащить множество объектов из нашего приложения.в проводнике Windows.
Я предполагаю, что это происходит потому, что OnRenderGlobalData()
вызывается довольно много раз, и, конечно, каждый раз, когда ему приходится проходить по перетаскиваемым объектам и сохранять их как файлы.1010 *
Я искал идею переопределения OnRenderFileData()
, но проблема в том, что он имеет дело только с одним файлом за раз.
Есть ли способ, которым я могу ускорить нашприложение, когда пользователь пытается перетащить множество объектов в проводник Windows, предпочтительно, перемещая цикл сохранения в место, где его можно выполнить только один раз, когда происходит фактическое удаление?