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