Tôi nghĩ ví dụ của tôi dưới đây có thể theo cách tiếp cận của @ Stephen-Cleary nhưng tôi muốn đưa ra một ví dụ được mã hóa. Điều này được sử dụng trong bối cảnh ràng buộc dữ liệu, ví dụ Xamarin.
Hàm tạo của lớp - hoặc thực sự là setter của một thuộc tính khác mà nó phụ thuộc - có thể gọi một khoảng trống không đồng bộ sẽ tạo ra thuộc tính khi hoàn thành nhiệm vụ mà không cần phải chờ đợi hoặc chặn. Khi cuối cùng nó nhận được một giá trị, nó sẽ cập nhật giao diện người dùng của bạn thông qua cơ chế NotifyPropertyChanged.
Tôi không chắc chắn về bất kỳ tác dụng phụ nào của việc gọi khoảng trống aysnc từ hàm tạo. Có lẽ một bình luận viên sẽ giải thích chi tiết về xử lý lỗi, v.v.
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();
}
}