async void ReloadAllVideo() { Stopwatch st = null; var loader = ResourceLoader.GetForCurrentView(); //앱바에 시작 상태 통지 EnableButtons(false); if (Debugger.IsAttached) { st = new Stopwatch(); st.Start(); } await ThreadPool.RunAsync(async handler => { var mfiList = new List <MediaInfo>(); //재생목록 로드 (이미 추가된 파일인지 표시를 위해) playlist = new List <MediaInfo>(); fileDAO.LoadPlayList(playlist, 100, 0, false); //캐시 로딩의 경우 DB로 부터 캐시를 먼저 로드 if (loadingMode == LoadingMode.Caching) { fileDAO.LoadAllVideoList(mfiList, playlist); } await DispatcherHelper.RunAsync(() => { //목록 초기화 AllVideoSource.Clear(); //캐시 로드인 경우 로딩 경로를 "캐시에서 로딩" 으로 변경 if (loadingMode == LoadingMode.Caching && mfiList.Count > 0) { SearchFolderPath = loader.GetString("Cache"); } }); bool isLoaded = false; if (loadingMode == LoadingMode.Caching && mfiList.Count > 0) { //로딩 표시 loadingMode = LoadingMode.None; //캐시 로딩 처리... var jumpGroupList = mfiList.ToAlphaGroups(x => x.Name); foreach (var jumpGroup in jumpGroupList) { await DispatcherHelper.RunAsync(() => { AllVideoSource.Add(jumpGroup); }); } //캐시 로딩 완료 처리 isLoaded = true; } else { //로딩 표시 loadingMode = LoadingMode.None; List <FolderInfo> folderList = null; InitializeAllVideos(out folderList); //폴더 목록이 비어 있으면 로딩완료 처리 isLoaded = folderList.Count == 0; //캐시 로딩이 아닌경우 (디렉토리 풀스캔) //폴더내 파일 로딩 처리 if (!isLoaded) { foreach (var fi in folderList) { LoadFilesRecursively(await fi.GetStorageFolder(true), AddAllVideoJumpList); } isLoaded = true; } } if (isLoaded) { //화면 로딩 상태 제거 (캐시로딩 또는 캐시로딩은 아니지만, 로딩할 폴더 목록이 없는 경우) await DispatcherHelper.RunAsync(() => { //진행바 및 현재 탐색 폴더 표시 삭제 SearchFolderPath = string.Empty; //우측 상단 버튼 그룹 제어 EnableButtons(true); //시크 데이터 정리 //fileDAO.DeleteSeekingData(); //재생 목록 정리 fileDAO.CleanPlayList(); }); } if (Debugger.IsAttached) { Debug.WriteLine("전체 비디오 로딩 완료 : " + st.Elapsed); } //전체 로딩 후 생성 요청... MessengerInstance.Send <Message>(new Message("CheckSearchElement", null), MainViewModel.NAME); }); }