Creo que mi ejemplo a continuación puede seguir el enfoque de @ Stephen-Cleary, pero quería dar un ejemplo codificado. Esto es para usar en un contexto de enlace de datos, por ejemplo Xamarin.
El constructor de la clase, o el configurador de otra propiedad de la que depende, puede llamar a un vacío asíncrono que llenará la propiedad al completar la tarea sin la necesidad de esperar o bloquear. Cuando finalmente obtenga un valor, actualizará su interfaz de usuario a través del mecanismo NotifyPropertyChanged.
No estoy seguro de los efectos secundarios de llamar a un vacío de Aysnc desde un constructor. Tal vez un comentarista elaborará el manejo de errores, etc.
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();
}
}