Асинхронный метод для QueueClient.Receive ()?

Я использую служебную шину для соединения веб-роли и рабочей роли. Моя рабочая роль находится в непрерывном цикле, и я получаю сообщение, отправленное веб-ролью с помощью метода QueueClient.Receive ().

Но при использовании этого метода, если в очереди служебной шины нет сообщения, он ожидает получения сообщения в течение нескольких секунд, а не переходит на следующую строку для дальнейшего выполнения. Я надеялся, что будет какой-то асинхронный метод для получения сообщений? или хотя бы какой-то способ установки этого времени ожидания?

Я нашел этот метод BeginReceive из документации MSDNQueueClient и я надеялся, что это будет ответом на мой вопрос, но я не знаю, как использовать этот метод. Параметры метода - асинхронный обратный вызов и состояние объекта, которые я не знаю, каковы они.

Есть идеи?

ОБНОВИТЬ: Благодаря отличному решению Sandrino, оно работает асинхронно. Но асинхронность теперь доставляет мне некоторые проблемы. Мой VS падает. Не уверен, в чем проблема. Ниже приведен код, который я использую.

Роль работника:

public override void Run()
    {
while (!IsStopped)
        {                
                // Receive the message from Web Role to upload the broadcast to queue
                BroadcastClient.BeginReceive(OnWebRoleMessageReceived, null);                    

                // Receive the message from SignalR BroadcastHub
                SignalRClient.BeginReceive(OnSignalRMessageReceived, null);                    

            }
}


public void OnWebRoleMessageReceived(IAsyncResult iar)
    {
        BrokeredMessage receivedBroadcastMessage = null;
        receivedBroadcastMessage = BroadcastClient.EndReceive(iar);

        if (receivedBroadcastMessage != null)
        {   //process message
           receivedBroadcastMessage.Complete();
        }
    }

public void OnSignalRMessageReceived(IAsyncResult iar)
    {
        BrokeredMessage receivedSignalRMessage = null;
        receivedSignalRMessage = SignalRClient.EndReceive(iar);

        if (receivedSignalRMessage != null)
        {
            //process message
           receivedSignalRMessage.Complete();

           WorkerRoleClient.Send(signalRMessage);
        }
     }

Я пропускаю что-нибудь, что заставляет VS работать и падать? Потому что, прежде чем перейти к BeginReceive, когда я использую QueueClient.Receive, он работал нормально и не зависал.

Спасибо

Ответы на вопрос(3)

Ваш ответ на вопрос