public Workpool(UseCaseHandler <object> handler = null, params UseCase <TaskModel, object>[] useCases) { _useCases = useCases; Handler = handler; Count = PendingCount = useCases.Length; Result = new List <TaskModel>(); Exceptions = new List <Exception>(); }
internal TodoListViewModel(CrossController controller) { TodoList = new ObservableCollection <TaskModel>(); _controller = controller; _controller.ControlBlocked += OnBlockingOperationsStarted; _controller.ControlFreed += OnBlockingOperationsFinished; _useCaseHandler = new UseCaseHandler <IEnumerable <TaskModel> >( onComplete: OnUseCaseComplete, onError: e => OnError?.Invoke(this, new ErrorEventArgs(e))); }
public void Execute(UseCaseHandler <object> handler = null) { if (handler != null) { Handler = handler; } Handler?.OnStart?.Invoke(); var tasks = new List <Task>(); foreach (var useCase in _useCases) { var currentHandler = useCase.Execute(OnComplete, OnError, OnStart); tasks.Add(currentHandler.ExecutingTask); } Task.WaitAll(tasks.ToArray()); Handler?.OnComplete?.Invoke(Result); }