示例#1
0
        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
            }
        }