试图理解UI异步调用
本文关键字:异步 调用 UI | 更新日期: 2023-09-27 18:08:33
所以我找到了这篇博文
http://lostechies.com/gabrielschenker/2009/01/23/synchronizing-calls-to-the-ui-in-a-multi-threaded-application/我花了一上午的时间试图从中吸取教训。它用"股票报价"更新一个标签。
MessageBus.Register<QuoteMessage>(m => label1.Text = m.Symbol+":"+m.Quote.ToString("n2"));
我想只用一个消息处理程序更新多个标签。具体来说,我可能希望根据QuoteMessage对象中的内容更改不同的标签。对于下面的代码,我只能使用每个标签的处理程序来更新标签。
做MessageBus.Register<QuoteMessage>(m => label1.Text = m.Symbol+":"+m.Quote.ToString("n2"));
MessageBus.Register<QuoteMessage>(m => label2.Text = m.Symbol + ":" + m.Quote.ToString("n2"));
MessageBus.Register<QuoteMessage>(m => label3.Text = m.Symbol + ":" + m.Quote.ToString("n2"));
MessageBus.Register<QuoteMessage>(m => label4.Text = m.Symbol + ":" + m.Quote.ToString("n2"));
让我得到4个标签显示相同的东西
我认为您缺少的是处理程序可以在委托操作中具有逻辑。我会这样做:
MessageBus.Register<QuoteMessage>(m => {
if (m.Symbol == "MSFT") {
label1.Text = m.Symbol+":"+m.Quote.ToString("n2");
label2.Text = m.Symbol+":"+m.Quote.ToString("n2");
}
else if (something) {
// Do something else
label3.Text = m.Symbol+":"+m.Quote.ToString("n2");
}
});