Exemplo n.º 1
0
        private void Download_DownloadPercentageChangedEvent(object sender, PercentageChangedEventArgs args)
        {
            var info = (HttpDownload)sender;

            Debug.WriteLine($"PercentageChanged: Task: {info.DownloadPath} Speed: {args.Speed} Progress: {args.Progress}");

            //TaskPercentageChangedEvent?.Invoke(this, new DownloadProgressChangedEventArgs(_database.GetFileIdByPath(info.DownloadPath), new DataSize(args.Progress), new DataSize(args.Speed)));
            EventAggregator.GetEvent <DownloadProgressChangedEvent>().Publish(new DownloadProgressChangedEventArgs(_database.GetFileIdByPath(info.DownloadPath), new DataSize(args.Progress), new DataSize(args.Speed)));
        }
Exemplo n.º 2
0
 public TaskManager(IUnityContainer container, LocalDiskUser user) : base(container)
 {
     _user       = user;
     _dataFolder = Path.Combine(Directory.GetCurrentDirectory(), "Users", user.Name);
     _database   = TaskDatabase.GetDatabaseByUser(user);
     _runing     = true;
     new Thread(async() =>
     {
         while (_runing)
         {
             Thread.Sleep(1000);
             if (_downloadingTasks.Count(v => v.DownloadState == DownloadStateEnum.Downloading) < _user.ParallelTaskNumber)
             {
                 //如果正在下载的文件数量与已经请求的文件数量相同
                 if (_database.GetDownloadingTask().Length == _downloadingTasks.Count)
                 {
                     var result = await _database.Next();
                     if (result.ErrorCode != 0)
                     {
                         if (result.ErrorCode == 209)
                         {
                             //没有新的任务了
                         }
                         //出现错误时的处理
                         continue;
                     }
                     //Created -> Waiting
                     EventAggregator.GetEvent <DownloadStateChangedEvent>().Publish(new DownloadStateChangedEventArgs(_database.GetFileIdByPath(result.Info.DownloadPath), DownloadStateEnum.Created, DownloadStateEnum.Waiting));
                     AddDownloadingTask(result.Info);
                     continue;
                 }
                 var data =
                     _database.GetDownloadingTask()
                     .FirstOrDefault(v => _downloadingTasks.All(v2 => v.DownloadPath != v2.DownloadPath));
                 AddDownloadingTask(data.Info);
             }
         }
     }).Start();
 }
 public TaskManager(IUnityContainer container, MountUser user) : base(container)
 {
     _user       = user;
     _dataFolder = Path.Combine(Common.UserDataSavePath, user.Username);
     if (!Directory.Exists(_dataFolder))
     {
         Directory.CreateDirectory(_dataFolder);
     }
     _database = TaskDatabase.GetDatabaseByUser(Container, user);
     _runing   = true;
     new Thread(async() =>
     {
         while (_runing)
         {
             Thread.Sleep(1000);
             if (_downloadingTasks.Count(v => v.DownloadState == DownloadStateEnum.Downloading) < Container.Resolve <ILocalConfigInfo>().ParallelTaskNumber)
             {
                 //如果正在下载的文件数量与已经请求的文件数量相同
                 if (_database.GetDownloadingTask().Length == _downloadingTasks.Count)
                 {
                     var result = await _database.Next();
                     if (result == null)
                     {
                         continue;
                     }
                     if (result.ErrorCode != 0)
                     {
                         if (result.ErrorCode == 209)
                         {
                             //没有新的任务了
                         }
                         //出现错误时的处理
                         continue;
                     }
                     //Created -> Waiting
                     EventAggregator.GetEvent <DownloadStateChangedEvent>().Publish(new DownloadStateChangedEventArgs(_database.GetFileIdByPath(result.Info.DownloadPath), DownloadStateEnum.Created, DownloadStateEnum.Waiting));
                     AddDownloadingTask(result.Info);
                     continue;
                 }
                 var data =
                     _database.GetDownloadingTask()
                     .FirstOrDefault(v => _downloadingTasks.All(v2 => v.DownloadPath != v2.DownloadPath));
                 if (data != null)
                 {
                     AddDownloadingTask(data.Info);
                 }
             }
         }
     })
     {
         IsBackground = true
     }.Start();
 }