我认为下面的示例可能遵循@ Stephen-Cleary的方法,但是我想给出一个编码示例。这用于数据绑定上下文中,例如Xamarin。
该类的构造函数-或实际上是它依赖的另一个属性的setter-可以调用一个异步void,该异步void将在任务完成时填充该属性,而无需等待或阻塞。最终获得值后,它将通过NotifyPropertyChanged机制更新您的UI。
我不确定从构造函数调用aysnc无效的任何副作用。也许评论者会详细说明错误处理等。
class MainPageViewModel : INotifyPropertyChanged
{
IEnumerable myList;
public event PropertyChangedEventHandler PropertyChanged;
public MainPageViewModel()
{
MyAsyncMethod()
}
public IEnumerable MyList
{
set
{
if (myList != value)
{
myList = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("MyList"));
}
}
}
get
{
return myList;
}
}
async void MyAsyncMethod()
{
MyList = await DoSomethingAsync();
}
}