in Samples-NetCore/MusicManager/MusicManager.Applications/Controllers/ManagerController.cs [189:235]
private async void UpdateMusicFiles(FolderDepth folderDepth)
{
updateMusicFilesCancellation?.Cancel();
var cancellation = new CancellationTokenSource();
updateMusicFilesCancellation = cancellation;
Log.Default.Trace("ManagerController.UpdateMusicFiles:Start");
managerStatusService.StartUpdatingFilesList();
musicFiles.Clear();
var path = ManagerViewModel.FolderBrowser.CurrentPath;
try
{
var filesCount = 0;
if (Directory.Exists(path))
{
var userSearchFilter = ManagerViewModel.SearchFilter.UserSearchFilter;
var applicationSearchFilter = ManagerViewModel.SearchFilter.ApplicationSearchFilter;
var files = await GetFilesAsync(path, folderDepth, userSearchFilter, applicationSearchFilter, cancellation.Token);
filesCount = files.Count;
var newFiles = files.Select(x => musicFileContext.Create(x)).ToArray();
foreach (var newFile in newFiles)
{
musicFiles.Add(newFile);
}
if (selectionService.MusicFiles.Any())
{
selectionService.SelectedMusicFiles.Clear();
selectionService.SelectedMusicFiles.Add(selectionService.MusicFiles.First());
}
}
managerStatusService.FinishUpdatingFilesList(filesCount);
}
catch (OperationCanceledException)
{
Log.Default.Trace("ManagerController.UpdateMusicFiles:Canceled");
}
if (cancellation == updateMusicFilesCancellation)
{
updateMusicFilesCancellation = null;
}
Log.Default.Trace("ManagerController.UpdateMusicFiles:End");
}