private void OnDownloadCompletedOrCanceled(DownloadStateChangedEventArgs e) { Application.Current.Dispatcher.Invoke(() => { DownloadTaskList.Remove(DownloadTaskList.FirstOrDefault(item => item.FileId == e.FileId)); }); RaisePropertyChanged(nameof(TotalDownloadQuantity)); OnDownloadProgressChanged(null, null); }
private void InitialDownloadEvents(HttpDownload downloadInfo) { var taskInfo = DownloadTaskList.FirstOrDefault(item => item.FilePath.FullPath == downloadInfo.DownloadPath); if (taskInfo != null) { downloadInfo.DownloadProgressChangedEvent += taskInfo.OnDownloadProgressChanged; downloadInfo.DownloadStateChangedEvent += taskInfo.OnDownloadStateChanged; } downloadInfo.DownloadProgressChangedEvent += OnDownloadProgressChanged; downloadInfo.DownloadStateChangedEvent += OnDownloadStateChanged; }
private void OnDownloadStateChanged(DownloadStateChangedEventArgs e) { OnPropertyChanged(nameof(IsStartAll)); if (e.NewState == DownloadStateEnum.Completed || e.NewState == DownloadStateEnum.Canceled) { OnDownloadCompletedOrCanceled(e); } if (e.NewState == DownloadStateEnum.Downloading) { var temp = DownloadTaskList.FirstOrDefault(item => item.FileId == e.FileId); var indexThis = DownloadTaskList.IndexOf(temp); if (indexThis != 0) { DownloadTaskList.Insert(0, temp); DownloadTaskList.Remove(temp); } } Debug.WriteLine($"{DateTime.Now}: FileId={e.FileId}, OldState={e.OldState}, NewState={e.NewState}, IsStartAll={IsStartAll}"); }
public DownloadingPageViewModel() { InitialDownloadList(); TaskManager.GetTaskManagerByLocalDiskUser(MountUserRepository.MountedUser).TaskAddedCompleted += () => { Application.Current.Dispatcher.Invoke(() => { InitialDownloadList(); }); }; TaskManager.GetTaskManagerByLocalDiskUser(MountUserRepository.MountedUser).TaskCollectionChanged += (httpdownload) => { Application.Current.Dispatcher.Invoke(() => InitialDownloadEvents(httpdownload)); }; var https = TaskManager.GetTaskManagerByLocalDiskUser(MountUserRepository.MountedUser).GetHttpDownloads(); foreach (var item in https) { if (item.DownloadState == DownloadStateEnum.Downloading) { var downloadingItem = DownloadTaskList.FirstOrDefault(p => p.FilePath.FullPath == item.DownloadPath); if (downloadingItem != null) { downloadingItem.OnDownloadStateChanged(null, new DownloadStateChangedEventArgs(DownloadStateEnum.Waiting, DownloadStateEnum.Downloading)); item.DownloadStateChangedEvent += downloadingItem.OnDownloadStateChanged; item.DownloadProgressChangedEvent += downloadingItem.OnDownloadProgressChanged; } } item.DownloadStateChangedEvent += OnDownloadStateChanged; item.DownloadProgressChangedEvent += OnDownloadProgressChanged; } }
private void OnDownloadStateChanged(object sender, DownloadStateChangedEventArgs e) { RaisePropertyChanged(nameof(IsStartAll)); if (e.NewState == DownloadStateEnum.Completed || e.NewState == DownloadStateEnum.Canceld) { OnDownloadCompletedOrCanceled(e); } if (e.NewState == DownloadStateEnum.Downloading) { var temp = DownloadTaskList.FirstOrDefault(item => item.FileId == e.FileId); var indexThis = DownloadTaskList.IndexOf(temp); if (indexThis != 0) { Application.Current.Dispatcher.Invoke(() => { DownloadTaskList.Insert(0, temp); DownloadTaskList.Remove(temp); }); } } Debug.WriteLine($"{DateTime.Now}: FileId={e.FileId}, OldState={e.OldState}, NewState={e.NewState}, IsStartAll={IsStartAll}"); }
private void OnDownloadCompletedOrCanceled(DownloadStateChangedEventArgs e) { DownloadTaskList.Remove(DownloadTaskList.FirstOrDefault(item => item.FileId == e.FileId)); OnPropertyChanged(nameof(TotalDownloadQuantity)); OnDownloadPregressChanged(null); }