Exemple #1
0
        public BackgroundWorkerContinuation Work(BackgroundWorkerContext context, CancellationToken token)
        {
            if (token.IsCancellationRequested)
            {
                return(context.Exit());
            }

            if (context.InvocationCount == 1)
            {
                foreach (BackgroundServerHost host in _servers)
                {
                    try
                    {
                        host.Start();

                        _isRunning.Add(host);
                    }
                    catch (Exception ex)
                    {
                        LogError(host, ex);
                    }
                }

                _output($"Started {_isRunning.Count} server(s)");

                return(context.Wait(_configuration.HouseKeepingInterval));
            }

            // Calculates whether to output status text or not, depending on number of iterations.
            bool outputStatus = _configuration.OutputStatusText(context.InvocationCount);

            CheckIsRunning(outputStatus);

            if (ExitHouseKeeping())
            {
                _output("Exiting (no more servers left to monitor)");

                Dispose();
                return(context.Exit());
            }

            if (outputStatus)
            {
                _output($"{_isRunning.Count} server(s) running. Uptime: {_uptime.GetUptimeText(_startedAt)}");
            }

            return(context.Wait(_configuration.HouseKeepingInterval));
        }
            public BackgroundWorkerContinuation Work(BackgroundWorkerContext context, CancellationToken token)
            {
                _writer.WriteLine("Adding message");
                _queue.Add(_factory.Message);

                return(context.Exit());
            }
Exemple #3
0
        public BackgroundWorkerContinuation Work(BackgroundWorkerContext context, CancellationToken token)
        {
            if (context.InvocationCount == 10)
            {
                return(context.Exit());
            }

            return(context.Wait(TimeSpan.FromSeconds(1)));
        }
Exemple #4
0
            public BackgroundWorkerContinuation Work(BackgroundWorkerContext context, CancellationToken token)
            {
                _bus.SendLocal(_message).Wait(token);

                return(context.Exit());
            }