我只想以异步方法接收我的消息!但这会导致我的用户界面冻结。
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时,这段代码曾经有效。
有什么建议吗?
async
会使他们的方法异步运行。 - Panagiotis Kanavos