private IEnumerable <Task> InitTaskInstance(IEnumerable <TaskItem <bool> > aTasks) { var progressingTasks = aTasks.Select(async t => { if (t.TaskInstance == null) { t.TaskInstance = TaskExcuteHandler.Invoke(t, t.TaskCancellationTokenSource.Token); } await t.TaskInstance.ConfigureAwait(false); }); return(progressingTasks); }
private async void TraversalTaskListNew(ObservableCollection <TaskItem <bool> > aTaskCollection) { isRun = true; await Task.Run(async() => { NullTaskNoteVisibility = Visibility.Collapsed; TaskCollection = new ObservableCollection <TaskItem <bool> >(aTaskCollection.Where(x => x.TaskStatus != TaskStatusEnum.Completed)); if (TaskCollection.FirstOrDefault(x => x.TaskStatus == TaskStatusEnum.InProgress) != null) { await Task.Delay(100); TraversalTaskListNew(TaskCollection); } else { var task = TaskCollection.FirstOrDefault(t => t.TaskStatus == TaskStatusEnum.Ready || t.TaskStatus == TaskStatusEnum.Hangup); if (task != null) { if (task.TaskStatus == TaskStatusEnum.Hangup) { task.TaskCancellationTokenSource = new CancellationTokenSource(); } task.TaskInstance = TaskExcuteHandler.Invoke(task, task.TaskCancellationTokenSource.Token); await Task.Delay(100); await task.TaskInstance.ContinueWith(_ => TraversalTaskListNew(TaskCollection)); } else { isRun = false; if (TaskCollection.Count() == 0) { NullTaskNoteVisibility = Visibility.Visible; return; } } } }); }