在后台线程中枚举ShellFolder

时间:2013-11-22 15:08:12

标签: c# multithreading windows-api-code-pack

是否可以使用Windows API CodePack在后台线程中安全地枚举ShellContainer?

我试图枚举ShellFolders(桌面,我的电脑等),一切都很好,直到我点击阻止UI的东西。特别是,'网络'返回一个孩子名单大约需要40秒。

我试图在后台运行任务,它似乎工作,但随后一些已知子文件夹的文件夹开始失败并返回没有名称或解析名称的项目。似乎互操作已经破坏了,并且让我认为它不是线程安全的。

new Task(() =>
{
   // if this fails, the items will be ShellObjects 
   // but will have no parsingnames
   var items = MyShellFolder.ToArray();
   dispatcher.Invoke(() => MyChildren.AddRange(items));
}).Start();

0 个答案:

没有答案