收听Azure队列消息Win Form

时间:2016-02-14 17:34:18

标签: c# multithreading azure

我正在运行下面的代码,它正在锁定我的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);     
        }
    }

如何使用它来获取消息然后处理它而不锁定表单?

1 个答案:

答案 0 :(得分:0)

您希望以某种方式使用多线程,否则您发布的代码将会锁定" UI线程直到完成。我建议使用Async / Await,但也可以使用BackgroundWorker或新线程。

此外," Thread.Sleep"在这种情况下使用是非常糟糕的,因为你拥有它,它将冻结UI线程10秒!