private void OnDownloadTaskRemoved(object sender, TaskRemovedEventArgs <HttpFileDownloadTask> e) { if (e.Task != null) { FeedEnclosure enc = e.Task.UserState as FeedEnclosure; if (enc != null) { lock (sync) { DownloadTaskRemoved(enc, e.Task, true); } } } else if (e.Tasks != null) { Feed tmpParent = null; FeedEnclosure tmpEnclosure = null; List <FeedEnclosure> tmpList = null; Dictionary <Feed, List <FeedEnclosure> > feedDict = new Dictionary <Feed, List <FeedEnclosure> > (); lock (sync) { foreach (HttpFileDownloadTask t in e.Tasks) { tmpEnclosure = t.UserState as FeedEnclosure; if (tmpEnclosure != null) { tmpParent = tmpEnclosure.Item.Feed; if (!feedDict.TryGetValue(tmpParent, out tmpList)) { tmpList = new List <FeedEnclosure> (); feedDict.Add(tmpParent, tmpList); } tmpList.Add(tmpEnclosure); DownloadTaskRemoved(tmpEnclosure, t, false); } } //foreach (KeyValuePair<Feed,List<FeedEnclosure>> kvp in feedDict) { //kvp.Key.DecrementQueuedDownloadCount (kvp.Value.Count); //} } } }
protected virtual void OnTaskRemovedHandler(object sender, TaskRemovedEventArgs <T> e) { lock (sync) { if (e.Index != -1 && e.Task != null) { T tsk = e.Task as T; if (currentTasks.Contains(tsk)) { tsk.CancelAsync(); return; } else if (tsk.Status == TaskStatus.Ready || tsk.Status == TaskStatus.Paused) { gsm.DecrementRemainingTaskCount(); } Disassociate(tsk); } else if (e.Indices != null && e.Tasks != null) { int sub = e.Tasks.Count; List <T> removeList = new List <T> (sub); foreach (T tsk in e.Tasks) { if (currentTasks.Contains(tsk)) { tsk.CancelAsync(); --sub; } else { removeList.Add(tsk); } } if (sub > 0) { Disassociate(removeList); gsm.RemainingTasks -= sub; } } } }
private void OnDownloadTaskRemoved(object sender, TaskRemovedEventArgs<HttpFileDownloadTask> e) { if (e.Task != null) { FeedEnclosure enc = e.Task.UserState as FeedEnclosure; if (enc != null) { lock (sync) { DownloadTaskRemoved (enc, e.Task, true); } } } else if (e.Tasks != null) { Feed tmpParent = null; FeedEnclosure tmpEnclosure = null; List<FeedEnclosure> tmpList = null; Dictionary<Feed, List<FeedEnclosure>> feedDict = new Dictionary<Feed,List<FeedEnclosure>> (); lock (sync) { foreach (HttpFileDownloadTask t in e.Tasks) { tmpEnclosure = t.UserState as FeedEnclosure; if (tmpEnclosure != null) { tmpParent = tmpEnclosure.Item.Feed; if (!feedDict.TryGetValue (tmpParent, out tmpList)) { tmpList = new List<FeedEnclosure> (); feedDict.Add (tmpParent, tmpList); } tmpList.Add (tmpEnclosure); DownloadTaskRemoved (tmpEnclosure, t, false); } } //foreach (KeyValuePair<Feed,List<FeedEnclosure>> kvp in feedDict) { //kvp.Key.DecrementQueuedDownloadCount (kvp.Value.Count); //} } } }