private void Updater() { DateTime initialTruncationTime = DateTime.UtcNow.Subtract(TimeSpan.FromMinutes(LogTruncateInterval)); DateTime initialDiagnosticLogTime = DateTime.UtcNow.Subtract(TimeSpan.FromMinutes(DiagnosticLogIntervalInMinutes)); while (true) { int eventId = WaitHandle.WaitAny(_waitHandleArray, Interval); if (eventId == 0) { //If exitevent is signalled, the process is exiting. break; } #region Update Operations PublishHelper.LogVerboseInformation("UpdaterThread: Found {0} completed operations to update", _completedOperations.Count); if (_completedOperations.Count > 0) { lock (_completedOperations) { while (_completedOperations.Count > 0) { var operation = _completedOperations.Dequeue(); PublishHelper.UpdatePublishOperation(operation.OperationId, operation.SiteName, operation.Status); } } } #endregion #region Remove Stale Operations if ((DateTime.UtcNow - initialTruncationTime).TotalMinutes > LogTruncateInterval) { initialTruncationTime = DateTime.UtcNow; PublishHelper.LogVerboseInformation("LogTruncaterThread: Removing Stale Operations"); PublishHelper.RemoveStalePublishOperations(); } #endregion #region Log Diagnostic Data if ((DateTime.UtcNow - initialDiagnosticLogTime).TotalMinutes > DiagnosticLogIntervalInMinutes) { initialDiagnosticLogTime = DateTime.UtcNow; PublishHelper.LogOperationCount(); } #endregion } }