public static TaskDatabase GetDatabaseByUser(LocalDiskUser user) { if (List.Any(v => v.Name == user.Name)) { return(List.FirstOrDefault(v => v.Name == user.Name)); } var db = new TaskDatabase(user); List.Add(db); return(db); }
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(300); if (_downloadingTasks.Count(v => v.DownloadState == DownloadStateEnum.Downloading) < _user.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(); }
public static TaskManager GetTaskManagerByLocalDiskUser(IUnityContainer container, LocalDiskUser user) { if (!Manager.ContainsKey(user.Name)) { //Manager.Add(user.Name, new TaskManager(user)); Manager.Add(user.Name, container.Resolve <TaskManager>(new DependencyOverride <LocalDiskUser>(user))); } return(Manager[user.Name]); }
private TaskDatabase(LocalDiskUser user) { _user = user; Reload(); }