Я реализован Расширения пространства имен оболочки в моем приложении
Одним из реализованных мной интерфейсов был IShellFolder и IShellFolder2.
Все работает отлично, кроме случаев, когда проводник вызывает EnumObjects. Я хочу отображать индикатор выполнения на проводнике асинхронно.
Сегодня, когда я возвращаюсь к обозревателю IEnumIDList в функции EnumObjects, вызов проводника вызывается в IEnumIDList.Next. в этой функции мой код выполняет большую работу, которая может занять ~ 20 секунд, в это время проводник завис и не реагирует.
Что я вижу, что, если я вернусь к проводнику ~ 200 пунктов, и тогда массивный оператор будет отображать индикатор выполнения и будет отзывчивым.
Кто-нибудь знает, как заставить проводника реагировать и отображать индикатор выполнения, не возвращая пустышки?
Windows 7 всегда использует отдельный поток для перечисления элементов. В вашем случае блокировка ресурса является причиной зависания пользовательского интерфейса.