private void Processing()
        {
            Interlocked.Increment(ref _numberOfThreads);
            while (!_exit)
            {
                if ((DateTimeProvider.Now - _curDate).Days != 0)
                {
                    _curDate = DateTimeProvider.Now;
                    _messageWriter.CreateTodaysRepository();
                }

                if (_stop && _messages.Count == 0)
                {
                    _exit = true;
                }

                if (_messages.Count <= 0)
                {
                    continue;
                }

                if (_messages.Count > 50 * _numberOfThreads && _numberOfThreads < Environment.ProcessorCount)
                {
                    AddTask();
                }
                if (_messages.Count < 50 * (_numberOfThreads - 1) && _numberOfThreads > 0)
                {
                    DeleteTask();
                }
                IMessage message;
                bool     processed = false;
                while (!_messages.TryDequeue(out message))
                {
                    Thread.Sleep(10);
                }
                try
                {
                    processed = _messageWriter.CreateNewMessageEntry(message);
                    if (processed)
                    {
                        Interlocked.Decrement(ref _numberOfMessages);
                    }
                }
                catch (Exception)
                {
                    if (!processed)
                    {
                        _messages.Enqueue(message);
                    }
                }
            }
        }