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