private void DoTry(IMessageContext context)
{
var transportMessage = _receiveMessages.ReceiveMessage(context);
if (transportMessage == null)
{
//delay processing since we have no messages to process
if (!_idle)
{
Idle(this, EventArgs.Empty);
_idle = true;
}
_noMessageToProcessBackoffHelper.Value.Wait();
return;
}
//reset the back off counter - we have a message to process, so the wait times are now reset
_noMessageToProcessBackoffHelper.Value.Reset();
if (_idle)
{
NotIdle(this, EventArgs.Empty);
_idle = false;
}
_processMessage.Handle(context, transportMessage);
}
}