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);
}
}