【发布时间】:2013-04-12 14:52:30
【问题描述】:
我只想以异步方法接收我的消息!它冻结了我的用户界面
public async void ProcessMessages()
{
MessageQueue MyMessageQueue = new MessageQueue(@".\private$\MyTransactionalQueue");
MyMessageQueue.Formatter = new XmlMessageFormatter(new Type[] { typeof(string) });
while (true)
{
MessageQueueTransaction MessageQueueTransaction = new MessageQueueTransaction();
MessageQueueTransaction.Begin();
ContainError = false;
ProcessPanel.SetWaiting();
string Body = MyMessageQueue.Receive(MessageQueueTransaction).Body.ToString();
//Do some process with body string.
MessageQueueTransaction.Commit();
}
}
我只是像任何常规方法一样调用该方法,但它没有工作! 当我使用 BackgroundWorkers 而不是 async/await 时,这段代码可以正常工作
想法?
【问题讨论】:
-
您的代码是否产生任何警告?您是否阅读过他们所说的并试图理解他们?
-
查看您的错误列表,您会看到“此异步方法缺少 'await' 运算符并将同步运行”
-
这不是一个本地化的问题——事实上,SO 中有很多类似的问题,人们认为
async以某种方式使他们的方法异步运行
标签: c# message-queue async-await