示例#1
0
 private void OnDownloadCompletedOrCanceled(DownloadStateChangedEventArgs e)
 {
     Application.Current.Dispatcher.Invoke(() =>
     {
         DownloadTaskList.Remove(DownloadTaskList.FirstOrDefault(item => item.FileId == e.FileId));
     });
     RaisePropertyChanged(nameof(TotalDownloadQuantity));
     OnDownloadProgressChanged(null, null);
 }
示例#2
0
        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}");
        }
示例#4
0
        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;
            }
        }
示例#5
0
        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);
 }