private void ReportStatus() { TaskQueue task = new TaskQueue(this.taskGuid); if (totalSubscribersToSend > 0) { task.CompleteRatio = (subscribersSentSoFar / totalSubscribersToSend); } else { task.CompleteRatio = 1; //nothing to send so mark as complete } if (task.CompleteRatio >= 1) { task.Status = statusCompleteMessage; if (task.CompleteUTC == DateTime.MinValue) { task.CompleteUTC = DateTime.UtcNow; } Letter letter = new Letter(this.letterGuid); letter.TrackSendComplete(LetterSendLog.GetCount(letter.LetterGuid)); } else { task.Status = string.Format( CultureInfo.InvariantCulture, statusRunningMessage, subscribersSentSoFar, totalSubscribersToSend); } task.LastStatusUpdateUTC = DateTime.UtcNow; task.Save(); nextStatusUpdateTime = DateTime.UtcNow.AddSeconds(updateFrequency); }