Как перетаскивать много файлов без нагрузки на системные ресурсы?

Одна из возможностей программы, над которой я работаю, - это возможность перетаскивать объекты из ее главного окна и помещать их в проводник Windows в виде файлов.

Для этого мы переопределяем COleDataSource :: OnRenderGlobalData () и, когда формат равен CF_HDROP , мы сохраняем каждый объект как файл. Это отлично работает, когда количество объектов невелико.

Однако, поскольку мы сейчас работаем над поддержкой количества объектов корпоративного уровня, мы наблюдаем большие задержки, иногда приводящие к зависанию или возможным сбоям, когда пользователь пытается перетащить множество объектов из нашего приложения в проводник Windows. .

Я предполагаю, что это происходит из-за того, что OnRenderGlobalData () вызывается довольно много раз, и, конечно же, каждый раз он должен перебирать объекты, которые перетаскиваются, и сохранять их как файлы.

Я рассматривал идею переопределения OnRenderFileData () , но проблема в том, что он работает только с одним файлом за раз.

Можно ли каким-либо образом ускорить работу нашего приложения, когда пользователь пытается перетащить множество объектов в проводник Windows, предпочтительно перемещая цикл сохранения в такое место, где он может быть выполнен только один раз, когда происходит фактическое перетаскивание?

6
задан A. K. 29 July 2011 в 09:23
поделиться