Windows API CodePack を使用してバックグラウンド スレッドで ShellContainer を安全に列挙することは可能ですか?
ShellFolders (デスクトップ、マイ コンピューターなど) を列挙しようとしていますが、UI をブロックする何かにぶつかるまで、すべてがうまく機能します。特に、'Network' は、子のリストを返すのに約 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();