2016-02-29 2 views
0

Я пытаюсь объяснить некоторые странности при попытке получить сообщения из локальных очередей хранения. Я уверен, что этого не происходит в производстве с использованием реальных очередей Azure.CloudQueueMessage.GetMessagesAsync зависает, в то время как синхронная версия не

линия, в частности, в результате чего этот вопрос является:

msgs = await priorityQueue.GetMessagesAsync(Settings.NumberOfMessagesToGet, visibilityTimeSpan, null, null); 

Который будет просто ничего не делать и не кажется, никогда не вернется. Однако, заменив его на:

msgs = priorityQueue.GetMessages(Settings.NumberOfMessagesToGet, visibilityTimeSpan, null, null); 

Возврат обратно после его завершения и кажется прекрасным.

Я использую ожидание здесь прямо? Любые идеи, почему это не работает?

Я использую Windows Azure SDK 2.8 с эмулятором Windows Azure Storage Emulator 4.2.0.0, если он дает какие-либо подсказки.

+0

Вы вызываете' Result' или 'Wait' дальше ваш стек вызовов? –

+0

Вы имеете в виду эту возвращенную задачу? Я думал, что ожидание задания означает, что вам не нужно было называть результат. Или вы имеете в виду что-то еще? –

+1

Вы полностью * должны * использовать 'await' - полностью вверх. Мне интересно, имеет ли ваш локальный код 'Result' или' Wait' в нем, который отсутствует в вашем производственном коде. –

ответ

0

Образец Azure Storage Очереди на GitHub показывает, как использовать шаблоны асинхронных с библиотекой .NET Client из консольного приложения:

https://github.com/Azure-Samples/storage-queue-dotnet-getting-started

Обратите внимание, что на верхнем уровне программы, «Ждите() ":

ProcessBatchOfMessagesAsync(queue).Wait(); 
Смежные вопросы