是否可以使用 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();