2016-02-14 3 views
1

Я запускаю код ниже и блокирует свою Win-форму. То, что я пытаюсь выполнить, отображает сообщение очереди в форме, когда доступно.Прослушивание сообщений в лазурной очереди Win Form

Вот мой код для прослушивания очереди

public void RunListener() 
     { 
       CloudQueue queue = clnt.GetQueueReference("products"); 

     while (true) 
     { 
      CloudQueueMessage qMessage = null; 
     do 
     { 
      qMessage = queue.GetMessage(TimeSpan.FromSeconds(10)); 
      if (qMessage != null) 
      { 
       //handle message 
      } 
     } 
     while (qMessage != null); 


     Thread.Sleep(10000);  
     } 
    } 

Как я могу использовать это, чтобы получить сообщение, а затем обработать его без блокировки формы?

ответ

0

Вы хотите использовать многопоточность в некотором роде, иначе код, который вы отправили, будет «блокировать» поток пользовательского интерфейса до его завершения. Я бы предложил использовать Async/Await, но также можно использовать BackgroundWorker или новый Thread.

Кроме того, «Thread.Sleep» довольно плохо используется в этом случае, поскольку, поскольку у вас есть это, он заморозит поток пользовательского интерфейса в течение 10 секунд!

+0

Можете ли вы поделиться примером того, как это может быть выполнено? – nlstack01

+0

Посмотрите, попробуйте что-нибудь, а затем отправьте еще один вопрос о переполнении стека с любыми новыми проблемами, с которыми вы сталкиваетесь. –

Смежные вопросы