IShellFolder.EnumObjects - 在 windows 资源管理器上异步

IShellFolder.EnumObjects - Async on windows explorer

我在我的应用程序中实现了Shell Namespace Extensions

我实现的接口之一是 IShellFolder 和 IShellFolder2
一切正常,除了当资源管理器调用 EnumObjects 时我想以异步方式在资源管理器上显示进度条。 今天当我return 到EnumObjects 函数中的explorer IEnumIDList 时,explorer 调用IEnumIDList.Next。在该函数中,我的代码执行大量操作,可能需要大约 20 秒,在那段时间内资源管理器卡住了并且没有响应。 我看到的是,如果我 return 到 explorer ~200 个项目,而不是进行大量操作,explorer 将显示进度条并且会响应。

有人知道如何强制资源管理器响应并显示进度条而不 returning 虚拟项目吗?

Windows 7 总是使用单独的线程进行项目枚举。在您的情况下,资源锁定是 UI 冻结的原因。