void CollectNestedItems(FolderItem parentItem, CancellationToken cancellationToken) { if (parentItem == null || parentItem.IsFile) { return; } if (cancellationToken.IsCancellationRequested) { return; } (parentItem as FolderItem).IsProcessing = true; var parentPath = parentItem.GetPath(); if (string.IsNullOrEmpty(parentPath)) { return; } parentItem.AddChildrenRange(ProcessContent(fileSystemProvider.GetDirectoryContent(parentPath), cancellationToken)); if (cancellationToken.IsCancellationRequested) { return; } parentItem.IsProcessing = false; if (!parentItem.HasChildren) { parentItem.UpdateIsValid(true); } OnFileSystemItemProcessed(parentItem); }