@@ -616,6 +616,7 @@ void ClearDisplay()
616
616
617
617
return ;
618
618
}
619
+ var filesAndFoldersLocal = filesAndFolders . ToList ( ) ;
619
620
620
621
// CollectionChanged will cause UI update, which may cause significant performance degradation,
621
622
// so suppress CollectionChanged event here while loading items heavily.
@@ -643,19 +644,19 @@ void ApplyBulkInsertEntries()
643
644
}
644
645
}
645
646
646
- for ( var i = 0 ; i < filesAndFolders . Count ; i ++ )
647
+ for ( var i = 0 ; i < filesAndFoldersLocal . Count ; i ++ )
647
648
{
648
649
if ( addFilesCTS . IsCancellationRequested )
649
650
return ;
650
651
651
652
if ( i < FilesAndFolders . Count )
652
653
{
653
- if ( FilesAndFolders [ i ] != filesAndFolders [ i ] )
654
+ if ( FilesAndFolders [ i ] != filesAndFoldersLocal [ i ] )
654
655
{
655
656
if ( startIndex == - 1 )
656
657
startIndex = i ;
657
658
658
- tempList . Add ( filesAndFolders [ i ] ) ;
659
+ tempList . Add ( filesAndFoldersLocal [ i ] ) ;
659
660
}
660
661
else
661
662
{
@@ -665,16 +666,16 @@ void ApplyBulkInsertEntries()
665
666
else
666
667
{
667
668
ApplyBulkInsertEntries ( ) ;
668
- FilesAndFolders . InsertRange ( i , filesAndFolders . ToList ( ) . Skip ( i ) ) ;
669
+ FilesAndFolders . InsertRange ( i , filesAndFoldersLocal . Skip ( i ) ) ;
669
670
670
671
break ;
671
672
}
672
673
}
673
674
674
675
ApplyBulkInsertEntries ( ) ;
675
676
676
- if ( FilesAndFolders . Count > filesAndFolders . Count )
677
- FilesAndFolders . RemoveRange ( filesAndFolders . Count , FilesAndFolders . Count - filesAndFolders . Count ) ;
677
+ if ( FilesAndFolders . Count > filesAndFoldersLocal . Count )
678
+ FilesAndFolders . RemoveRange ( filesAndFoldersLocal . Count , FilesAndFolders . Count - filesAndFoldersLocal . Count ) ;
678
679
679
680
if ( folderSettings . DirectoryGroupOption != GroupOption . None )
680
681
OrderGroups ( ) ;
@@ -1638,9 +1639,9 @@ await Task.Run(async () =>
1638
1639
1639
1640
filesAndFolders . AddRange ( fileList ) ;
1640
1641
1641
- await dispatcherQueue . EnqueueOrInvokeAsync ( CheckForSolutionFile , Microsoft . UI . Dispatching . DispatcherQueuePriority . Low ) ;
1642
1642
await OrderFilesAndFoldersAsync ( ) ;
1643
1643
await ApplyFilesAndFoldersChangesAsync ( ) ;
1644
+ await dispatcherQueue . EnqueueOrInvokeAsync ( CheckForSolutionFile , Microsoft . UI . Dispatching . DispatcherQueuePriority . Low ) ;
1644
1645
} ) ;
1645
1646
1646
1647
rootFolder ??= await FilesystemTasks . Wrap ( ( ) => StorageFileExtensions . DangerousGetFolderFromPathAsync ( path ) ) ;
@@ -1688,16 +1689,9 @@ await Task.Run(async () =>
1688
1689
1689
1690
private void CheckForSolutionFile ( )
1690
1691
{
1691
- for ( int i = 0 ; i < filesAndFolders . Count ; i ++ )
1692
- {
1693
- if ( FileExtensionHelpers . HasExtension ( filesAndFolders [ i ] . FileExtension , ".sln" ) )
1694
- {
1695
- SolutionFilePath = filesAndFolders [ i ] . ItemPath ;
1696
- return ;
1697
- }
1698
- }
1699
-
1700
- SolutionFilePath = null ;
1692
+ SolutionFilePath = filesAndFolders . ToList ( ) . AsParallel ( )
1693
+ . Where ( item => FileExtensionHelpers . HasExtension ( item . FileExtension , ".sln" ) )
1694
+ . FirstOrDefault ( ) ? . ItemPath ;
1701
1695
}
1702
1696
1703
1697
private async Task < CloudDriveSyncStatus > CheckCloudDriveSyncStatusAsync ( IStorageItem item )
0 commit comments