Beispiel #1
0
        /// <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);
            }
        }
Beispiel #2
0
        /// <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();
            }
        }
Beispiel #3
0
		/// <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();
			}
		}
Beispiel #4
0
		/// <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);
			}
		}