【发布时间】:2015-07-14 11:17:21
【问题描述】:
我想知道在 .NET 应用程序的主线程上执行任务的最佳异步方式是什么(准确地说是在 ViewModel 中)。 Dispatcher.BeginInvoke 现在仍然有效还是存在更好的方法来做到这一点?
【问题讨论】:
-
我很确定你不想在视图模型中引入多线程,也许在使用 async ... await 结构的控制器中。
-
好的。在 ViewModel 中做一些异步/等待有什么问题吗?
-
视图模型中的线程(或异步等待)没有任何问题。
-
@garryp 从模型中加载数据怎么样?如果我的模型是 WCF 代理,也许它有可等待的方法(实际上有这个)。即使您将
await抽象为“一劳永逸”的方法,VM仍然有效地引入了线程。我认为您对所涉及的交互的看法有点简单,但我很容易错了:)。 -
如果不涉及非常具体的示例,这很困难,但我认为模型不应该将这类信息暴露给相当高级别的视图模型。我猜你正在考虑一个非常聪明的模型,而我更喜欢那些非常愚蠢的模型,服务和助手封装了诸如对 WCF 服务的调用之类的东西。
标签: c# .net wpf asynchronous async-await