아래 예제는 @ Stephen-Cleary의 접근 방식을 따를 수 있다고 생각하지만 코딩 된 예제를 원했습니다. 이것은 Xamarin과 같은 데이터 바인딩 컨텍스트에서 사용하기위한 것입니다.
클래스의 생성자 또는 클래스가 의존하는 다른 속성의 setter는 대기 또는 블록이 없어도 작업 완료시 속성을 채우는 비동기 void를 호출 할 수 있습니다. 마지막으로 값을 얻으면 NotifyPropertyChanged 메커니즘을 통해 UI를 업데이트합니다.
생성자에서 aysnc void를 호출하면 어떤 부작용이 있는지 확실하지 않습니다. 아마도 주석 작성자는 오류 처리 등에 대해 자세히 설명 할 것입니다.
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();
}
}