private async void UpdateMusicFiles()

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");
        }