/// <summary> /// На базе этого метода работает поток, который отправляет сообщения аудиту /// </summary> private void SendToAuditAsync() { while (!threadNeedToStop) { while (ThreadQueue.Count > 0) { AuditParametersBase auditParametersBase = ThreadQueue.First(); ThreadQueue.Remove(auditParametersBase); // TODO: при асинхронной работе HttpContext.Current становится null, что приводит к ошибкам var auditAddParameters = auditParametersBase as CommonAuditParameters; if (auditAddParameters != null) { Audit.WriteCommonAuditOperation(auditAddParameters); } var auditRatifyParameters = auditParametersBase as RatificationAuditParameters; if (auditRatifyParameters != null) { Audit.RatifyAuditOperation(auditRatifyParameters); } var auditApiParameters = auditParametersBase as CheckedCustomAuditParameters; if (auditApiParameters != null) { Audit.WriteCustomAuditOperation(auditApiParameters); } } Thread.Sleep(SleepTime); } }
/// <summary> /// Записываем операции в очередь на аудит /// </summary> /// <param name="auditParametersBase">Параметры для их записи на аудит</param> public void WriteAuditOperationAsync(AuditParametersBase auditParametersBase) { ThreadQueue.Add(auditParametersBase); StartAuditThread(); }