Ejemplo n.º 1
0
        public virtual void Start()
        {
            _cancellationToken = new CancellationTokenSource();

            _task = Task.Factory.StartNew((state) =>
            {
                _service.Register(_user);

                System.Console.WriteLine("User: '******' is registered successfully.", _user);

                while (!_cancellationToken.IsCancellationRequested)
                {
                    var notifications = GetNotifications(_timeout);

                    var receivedDateTime = DateTime.UtcNow;

                    var notificationsCount = null == notifications ? 0 : notifications.Count();

                    System.Console.WriteLine("User: '******' is processing '{1}' notifications.", _user, notificationsCount);

                    ProcessNotifications(notifications);

                    ReportNotifications(receivedDateTime, notifications);
                }
            }, null, _cancellationToken.Token, TaskCreationOptions.LongRunning, TaskScheduler.Current);

            _task.ContinueWith((t) => System.Console.WriteLine("User: '******' has a faulted task. Exception: '{1}'", _user, t.Exception.Flatten()), TaskContinuationOptions.OnlyOnFaulted);
        }