/// <summary> /// 标记一个任务项目状态,并检查任务是否完成 /// </summary> /// <param name="item">任务条目</param> /// <param name="state">状态</param> internal void MarkSendTaskItemState(FileTaskItem item, FileTaskItemState state) { if (item.State == state) { return; } if (state == FileTaskItemState.Finished || state == FileTaskItemState.Failure) { //退出传输状态 _activeSendItems.Remove(item); //强制更新状态 OnTaskItemProgressChanged(new FileTaskEventArgs(item.TaskInfo, item)); EnsureSendStateUpdateTimerState(); } item.State = state; OnTaskItemStateChanged(new FileTaskEventArgs(item.TaskInfo, item)); //是否需要更新状态 if (state == FileTaskItemState.Processing) { _activeSendItems.Add(item); EnsureSendStateUpdateTimerState(); } //如果是完成了,那就查找下这个任务是不是全部完成了,如果是的话,那就删掉任务 if (state == FileTaskItemState.Finished && item.TaskInfo.TaskList.Count(s => s.State != FileTaskItemState.Finished) == 0) { OnSendTaskFinished(new FileTaskEventArgs(item.TaskInfo)); //SendTask.Remove(item.TaskInfo.PackageID); } }
/// <summary> /// 标记一个任务项目状态,并检查任务是否完成 /// </summary> /// <param name="item">任务条目</param> /// <param name="state">状态</param> internal void MarkReceiveTaskItemState(FileTaskItem item, FileTaskItemState state) { if (item.State == state) { return; } if (state == FileTaskItemState.Finished || state == FileTaskItemState.Failure) { //退出传输状态 this.activeReceiveItems.Remove(item); OnTaskItemProgressChanged(new FileTaskEventArgs(item.TaskInfo, item)); this.EnsureReceiveStateUpdateTimerState(); } item.State = state; OnTaskItemStateChanged(new FileTaskEventArgs(item.TaskInfo, item)); //是否需要更新状态 if (state == FileTaskItemState.Processing) { this.activeReceiveItems.Add(item); this.EnsureReceiveStateUpdateTimerState(); } //如果是完成了,那就查找下这个任务是不是全部完成了,如果是的话,那就删掉任务 if ((state == FileTaskItemState.Finished || state == FileTaskItemState.Failure)) { //检测任务完成 if (item.TaskInfo.TaskList.Count(s => s.State != FileTaskItemState.Finished && s.State != FileTaskItemState.Failure) == 0) { FileTaskInfo task = item.TaskInfo; this.OnReceiveTaskFinished(new FileTaskEventArgs(task)); this.ReceiveTask.Remove(task); //检测是否有失败的,如果有就将请求重新发送以便重试 for (int i = task.TaskList.Count - 1; i >= 0; i--) { if (task.TaskList[i].State != FileTaskItemState.Failure) { task.TaskList.RemoveAt(i); //如果是成功的,则移除 } else { task.TaskList[i].State = FileTaskItemState.Scheduled; //重置任务的当前状态 if (!task.TaskList[i].IsFolder) { task.TaskList[i].FullPath = System.IO.Path.GetDirectoryName(task.TaskList[i].FullPath); } } } if (task.TaskList.Count > 0) { var e = new FileTaskEventArgs(task); OnFileReceiveTaskReDroped(e); if (!e.IsHandled) { OnFileReceiveTaskDiscarded(e); } } } StartReceive(); } }
/// <summary> /// 标记一个任务项目状态,并检查任务是否完成 /// </summary> /// <param name="item">任务条目</param> /// <param name="state">状态</param> internal void MarkReceiveTaskItemState(FileTaskItem item, FileTaskItemState state) { if (item.State == state) return; if (state == FileTaskItemState.Finished || state == FileTaskItemState.Failure) { //退出传输状态 this.activeReceiveItems.Remove(item); OnTaskItemProgressChanged(new FileTaskEventArgs(item.TaskInfo, item)); this.EnsureReceiveStateUpdateTimerState(); } item.State = state; OnTaskItemStateChanged(new FileTaskEventArgs(item.TaskInfo, item)); //是否需要更新状态 if (state == FileTaskItemState.Processing) { this.activeReceiveItems.Add(item); this.EnsureReceiveStateUpdateTimerState(); } //如果是完成了,那就查找下这个任务是不是全部完成了,如果是的话,那就删掉任务 if ((state == FileTaskItemState.Finished || state == FileTaskItemState.Failure)) { //检测任务完成 if (item.TaskInfo.TaskList.Count(s => s.State != FileTaskItemState.Finished && s.State != FileTaskItemState.Failure) == 0) { FileTaskInfo task = item.TaskInfo; this.OnReceiveTaskFinished(new FileTaskEventArgs(task)); this.ReceiveTask.Remove(task); //检测是否有失败的,如果有就将请求重新发送以便重试 for (int i = task.TaskList.Count - 1; i >= 0; i--) { if (task.TaskList[i].State != FileTaskItemState.Failure) task.TaskList.RemoveAt(i); //如果是成功的,则移除 else { task.TaskList[i].State = FileTaskItemState.Scheduled; //重置任务的当前状态 if (!task.TaskList[i].IsFolder) task.TaskList[i].FullPath = System.IO.Path.GetDirectoryName(task.TaskList[i].FullPath); } } if (task.TaskList.Count > 0) { var e = new FileTaskEventArgs(task); OnFileReceiveTaskReDroped(e); if (!e.IsHandled) OnFileReceiveTaskDiscarded(e); } } StartReceive(); } }
/// <summary> /// 标记一个任务项目状态,并检查任务是否完成 /// </summary> /// <param name="item">任务条目</param> /// <param name="state">状态</param> internal void MarkSendTaskItemState(FileTaskItem item, FileTaskItemState state) { if (item.State == state) return; if (state == FileTaskItemState.Finished || state == FileTaskItemState.Failure) { //退出传输状态 _activeSendItems.Remove(item); //强制更新状态 OnTaskItemProgressChanged(new FileTaskEventArgs(item.TaskInfo, item)); EnsureSendStateUpdateTimerState(); } item.State = state; OnTaskItemStateChanged(new FileTaskEventArgs(item.TaskInfo, item)); //是否需要更新状态 if (state == FileTaskItemState.Processing) { _activeSendItems.Add(item); EnsureSendStateUpdateTimerState(); } //如果是完成了,那就查找下这个任务是不是全部完成了,如果是的话,那就删掉任务 if (state == FileTaskItemState.Finished && item.TaskInfo.TaskList.Count(s => s.State != FileTaskItemState.Finished) == 0) { OnSendTaskFinished(new FileTaskEventArgs(item.TaskInfo)); //SendTask.Remove(item.TaskInfo.PackageID); } }