示例#1
0
        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)));
        }
示例#3
0
        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);
        }