public void AddTask(FileTask task) { lock (this.FileTasks) { if (_need_clear) { FileTasks.Clear(); CurrentTaskIndex = 0; PrevBytesAddup = 0; TotalLength = 0; CurrentLength = 0; CurrentFinished = 0; _need_clear = false; } FileTasks.Add(task); TotalLength += task.Length; Logger.Log("<FiletaskRecord> call AddTask : " + task.ToString(), LogLevel.Debug); } }
public void InsertTask(int index, FileTask task) { lock (this.FileTasks) { this.FileTasks.Insert(index, task); TotalLength += task.Length; Logger.Log("<FiletaskRecord> call InsertTask " + index.ToString() + " : " + task.ToString(), LogLevel.Debug); } }
/// <summary> /// 启动 File 传输任务,根据当前 FileTask 任务区分传输模式,并阻塞直到所有子线程完成后, /// 将 currentTaskIndex 指向下个 task,返回 /// 当前任务为 小文件 则启用单线程传输 /// 当前任务为 大文件 则启用多线程传输 /// </summary> private void TransferSingleTask(FileTask task) { Logger.Log(string.Format("<FileTaskManager> call TransferSingleTask, {0, 20}{1}", "", task.ToString()), LogLevel.Debug); if (task.Type == TransferType.Download) { task.Status = FileTaskStatus.Downloading; } else if (task.Type == TransferType.Upload) { task.Status = FileTaskStatus.Uploading; } if (task.Length <= Config.SmallFileThreshold) { TransferSingleTaskSmallFile(task, task.Type); } else { TransferSingleTaskBigFile(task); } }