public virtual async Task Run()

in Source/NuGetGallery.Monitoring/MonitorSet.cs [45:84]


        public virtual async Task Run(IEventReporter reporter, CancellationToken cancelToken)
        {
            Trace.WriteLine(String.Format(
                "[{0}][{1}] Host Started",
                DateTime.UtcNow.ToString("HH:mm:ss.ff"),
                Name));

            while (!cancelToken.IsCancellationRequested)
            {
                Trace.WriteLine(String.Format(
                    "[{0}][{1}] Cycle Started",
                    DateTime.UtcNow.ToString("HH:mm:ss.ff"),
                    Name));

                foreach (ApplicationMonitor monitor in Monitors)
                {
                    try
                    {
                        await monitor.Invoke(reporter, cancelToken);
                    }
                    catch (Exception ex)
                    {
                        Trace.WriteLine(String.Format(
                            "[{0}][{1}] Unhandled Monitor Exception: \n{2}",
                            DateTime.UtcNow.ToString("HH:mm:ss.ff"),
                            Name,
                            ex));
                    }
                }

                Trace.WriteLine(String.Format(
                    "[{0}][{1}] Cycle Complete, Sleeping for {2}",
                    DateTime.UtcNow.ToString("HH:mm:ss.ff"),
                    Name,
                    Period));

                // Wait until the next period
                await TaskEx.Delay(Period, cancelToken);
            }
        }