Пример #1
0
        public async Task OnCompleted_NotCompletedTest()
        {
            TaskObserver observer = TaskObserver.Create(Task.Run(() => {  }), GetLogger());

            observer.OnCompleted();
            bool completedTransition = await observer.TaskStatusCompletedTransition;

            Assert.IsFalse(completedTransition);
        }
Пример #2
0
        public void TestTaskObserverCreate()
        {
            Assert.Throws <ArgumentNullException>(() => new TaskObserver(null));

            TaskObserver observer = new TaskObserver(TaskType.Prepare, "description", false);

            Assert.AreSame(TaskType.Prepare, observer.Type);
            Assert.AreEqual("description", observer.Description);
            Assert.IsFalse(observer.Exposed);
        }
Пример #3
0
        public async Task OnCompleted_CompletedTest()
        {
            Task         taskToObserve = Task.Run(() => { Task.Delay(2000).Wait(); });
            TaskObserver observer      = TaskObserver.Create(taskToObserve, GetLogger());

            observer.OnNext(taskToObserve);
            observer.OnCompleted();
            bool completedTransition = await observer.TaskStatusCompletedTransition;

            Assert.IsTrue(completedTransition);
        }
Пример #4
0
        public IObserver <Task> GetRequiredObserverByTask(Task task)
        {
            IObserver <Task> observerTask;

            try
            {
                observerTask = observers.First <IObserver <Task> >(
                    observer => Object.ReferenceEquals(((TaskObserver)observer).ObservableTask, task));
            }catch (System.InvalidOperationException)
            {
                logger.Debug(string.Format("Task {0} was not registered", task.Id));
                observerTask = TaskObserver.Create(task, logger);
                ((TaskObserver)observerTask).Subscribe(this);
            }
            return(observerTask);
        }
Пример #5
0
        public void SubscribeTest()
        {
            List <Task> tasks = new List <Task>();
            Task        task  = Task.Run(() => { });

            tasks.Add(task);
            TasksProvider provider = TasksProvider.Create(new List <Task>(), GetLogger());

            provider.AddTask(task);
            TaskObserver observer = TaskObserver.Create(task, GetLogger());

            observer.OnNext(task);
            IDisposable unsubscriber = provider.Subscribe(observer);

            Assert.IsTrue(provider.Subscribe(observer) is IDisposable);
        }
Пример #6
0
        public async Task <bool> ObserversCompletation()
        {
            List <Task> potentiallyFinishedTasks = new List <Task>();

            foreach (IObserver <Task> observer in observers)
            {
                TaskObserver taskObserver = (TaskObserver)observer;
                await taskObserver.TaskStatusCompletedTransition;
                potentiallyFinishedTasks.Add(taskObserver.ObservableTask);
                taskObserver.OnCompleted();
            }
            foreach (Task task in potentiallyFinishedTasks)
            {
                OnTaskFinished(task);
            }
            return(true);
        }
Пример #7
0
        private void AddTask(Task task)
        {
            TaskObserver observableTask = TaskObserver.Create(task, logger);

            observableTask.Subscribe(tasksProvider);
        }
Пример #8
0
 public TaskObserver getTaskObserver(Model.task_info _task_info, List <string> _gun_position_info_id, Subject sub)
 {
     taskObserver = new TaskObserver(_task_info, _gun_position_info_id, sub);
     return(taskObserver);
 }
Пример #9
0
 public TaskObserver getTaskObserver(Model.task_info _task_info, List<string> _gun_position_info_id, Subject sub)
 {
     taskObserver = new TaskObserver(_task_info,_gun_position_info_id, sub);
     return taskObserver;
 }
Пример #10
0
 /// <summary>
 /// 移除观察者
 /// </summary>
 /// <param name="observer"></param>
 public void Detach(TaskObserver observer)
 {
     observers.Remove(observer);
 }
Пример #11
0
 /// <summary>
 /// 增加观察者
 /// </summary>
 /// <param name="observer"></param>
 public void Attach(TaskObserver observer)
 {
     observers.Add(observer);
 }
Пример #12
0
 public void TasksObserverCreateTest()
 {
     Assert.IsTrue(TaskObserver.Create(Task.Run(() => { }), GetLogger()) is IObserver <Task>);
 }
Пример #13
0
        /// <summary>
        /// 订阅
        /// </summary>
        /// <param name="onResult">收到结果委托</param>
        /// <param name="onError">遇到错误委托</param>
        /// <exception cref="ArgumentNullException"></exception>
        /// <returns></returns>
        public IDisposable Subscribe(Action <TResult> onResult, Action <Exception> onError)
        {
            var observer = new TaskObserver <TResult>(onResult, onError, null);

            return(this.Subscribe(observer));
        }