4

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();
4

0 に答える 0