【发布时间】:2019-07-09 15:15:26
【问题描述】:
我有一个基于 MVVM 架构的 WPF 应用程序。我正在我的 ViewModel 上实现常用且广泛使用的 INotifyPropertyChanged 接口,因为我需要对用户交互做出反应。
但是我如何在同步 PropertyChanged 事件处理程序中执行异步操作(例如加载一些数据)不使用使用async void'hacks'?
提前致谢!
编辑
我需要避免async void 的主要原因是因为我在测试驱动的环境中工作。异步 void 方法不可测试:(
【问题讨论】:
-
将
async void与事件处理程序一起使用并不是一种技巧。这是首选的解决方案。事件处理程序本质上是一劳永逸的,因此不应期望事件处理程序返回任何值。 -
在属性中加载数据通常被认为是不好的做法。这通常是创建方法而不是使用属性的标准之一。
标签: c# wpf mvvm async-await inotifypropertychanged