C# IShellFolder.EnumObjects与IShellFolder.ParseDisplayName的大数据正确实现?

C# IShellFolder.EnumObjects与IShellFolder.ParseDisplayName的大数据正确实现?,c#,c++,winapi,namespaces,shell-extensions,C#,C++,Winapi,Namespaces,Shell Extensions,我想知道名称空间扩展的开发 每当我们浏览到一个特定的虚拟文件夹时,都会调用EnumObjects,然后我会去服务器获取所有项目(因此,最终返回ppenumIDList) 问题是,有时候浏览器需要从我的IShellFolder中检索单个项目(使用ParseDisplayName) 我需要返回一个包含所有相关序列化内容的完全限定的PIDL。问题是,再次转到服务器并在返回的列表中搜索这一项看起来效率很低 解决方案似乎是将列表缓存在内存中。但我不确定在哪里,我尝试将EnumObjects缓存到列表中,并

我想知道名称空间扩展的开发

每当我们浏览到一个特定的虚拟文件夹时,都会调用
EnumObjects
,然后我会去服务器获取所有项目(因此,最终返回
ppenumIDList

问题是,有时候浏览器需要从我的
IShellFolder
中检索单个项目(使用
ParseDisplayName

我需要返回一个包含所有相关序列化内容的完全限定的PIDL。问题是,再次转到服务器并在返回的列表中搜索这一项看起来效率很低

解决方案似乎是将列表缓存在内存中。但我不确定在哪里,我尝试将
EnumObjects
缓存到列表中,并在每次调用
EnumObjects
时清除它。 但是当shell调用
ParseDisplayName
时,列表为空。我猜这是因为它再次反序列化了我的虚拟文件夹,而列表当然是空的


有没有一种好的方法可以将结果保存到某个地方,这样我的
ParseDisplayName
就不必每次都转到速度较慢的服务器上?

是“看起来效率很低”,还是您正在试图解决一个真正的性能问题?@IInspectable real performance issue。我正在从服务器获取一个内容列表,当ParseDisplayName出现时,我不知道如何填写PIDL(因为我需要检查它是否真的存在,并从服务器返回给我的数据中填写它-但是这些对象已经在我面前,为什么我必须再次转到服务器?)