/// <summary> /// 执行任务 /// </summary> /// <param name="task"></param> public async void DoTask(IHttpTask task) { if (task is GetTask) { var t = task as GetTask; var bytes = await client.DownloadDataTaskAsync(new Uri(t.Url)); t.CallBack(bytes); } else if (task is GetFileTask) { var t = task as GetFileTask; await client.DownloadFileTaskAsync(t.Url, t.FileSavePath); t.CallBack(new byte[0]); } else if (task is PostFileTask) { } else if (task is PostTask) { var t = task as PostTask; await client.UploadDataTaskAsync(new Uri(t.Url), System.Text.Encoding.UTF8.GetBytes(t.UpLoadData)); } DoNext(); }
/// <summary> /// 通过队列回调方式执行 /// </summary> /// <param name="task"></param> public void DoTaskByCallBack(IHttpTask task) { httpTaskQue.Enqueue(task); if (curTask == null) { DoNext(); } }
protected virtual void Remove(IHttpTask task) { lock (this.syncLock) { task.PropertyChanged -= this.OnTaskPropertyChanged; this.currentTasks.Remove(task.Identifier); this.OnChange(task, TaskListChange.Remove); } }
protected virtual void Add(IHttpTask task) { lock (this.syncLock) { task.PropertyChanged += this.OnTaskPropertyChanged; this.currentTasks.Add(task.Identifier, task); this.OnChange(task, TaskListChange.Add); } }
protected override void Add(IHttpTask task) { if (!(task is IIosHttpTask ios)) { throw new ArgumentException("You must inherit from IIosHttpTask"); } this.sessionDelegate.AddTask(ios); base.Add(task); }
/// <summary> /// 执行任务 /// </summary> /// <param name="task"></param> public void DoTask(IHttpTask task) { if (task is GetTask) { } else if (task is PostTask) { var data = task as PostTask; client.PostData(data.Url, data.UpLoadData); } }
private void DoNext() { //判断什么时候退出 if (httpTaskQue.Count == 0) { curTask = null; return; } curTask = httpTaskQue.Dequeue(); DoTask(curTask); }
public HttpTaskViewModel(IHttpTask task) { this.task = task; this.Cancel = new Acr.Command(task.Cancel); this.MoreInfo = new Acr.Command(() => { if (task.Status == TaskStatus.Error) { UserDialogs.Instance.Alert(task.Exception.ToString(), "Error"); } }); }
/// <summary> /// 异步堵塞 /// </summary> /// <param name="task"></param> /// <returns></returns> public string DoTaskAsync(IHttpTask task) { if (task is GetTask) { var data = task as GetTask; var result = client.GetAsync(data.Url); return(result); } else if (task is PostTask) { var data = task as PostTask; var result = client.PostDataAsync(data.Url, data.UpLoadData); return(result); } return("error"); }
public HttpTaskViewModel(IHttpTask task) { this.task = task; this.Cancel = new Command(task.Cancel); this.MoreInfo = new Command(() => { if (task.Status == TaskStatus.Error) { UserDialogs.Instance.Alert(task.Exception.ToString(), "Error"); } }); this.taskSub = Observable .Create <IHttpTask>(ob => { var handler = new PropertyChangedEventHandler((sender, args) => ob.OnNext(this.task)); this.task.PropertyChanged += handler; return(() => this.task.PropertyChanged -= handler); }) .Sample(TimeSpan.FromSeconds(1)) .Subscribe(x => Device.BeginInvokeOnMainThread(() => this.OnPropertyChanged(String.Empty))); }
public TaskListEventArgs(IHttpTask task, TaskListChange change) { this.Task = task; this.Change = change; }
protected virtual void OnChange(IHttpTask task, TaskListChange change) => this.CurrentTasksChanged?.Invoke(this, new TaskListEventArgs(task, change));