Я читал о программировании async-wait, и я смущен в сценарии, где я хочу, чтобы функция выполнялась асинхронно. Например, я хочу отобразить изображение в моем пользовательском интерфейсе. Итак, в потоке пользовательского интерфейса я вызываю функцию, которая извлекает изображение из хранилища и применяет изображение к пользовательскому интерфейсу.Как запустить функцию async
Каков правильный способ сделать это?
МЕТОД 1
private async void SetImage()
{
await Task.Run(() =>
{
byte[] fullViewImageBytes = Utils.GetImageFromStorage(fileName);
if (fullViewImageBytes != null)
{
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
MemoryStream memStream = new MemoryStream(fullViewImageBytes);
BitmapImage image = new BitmapImage();
image.SetSource(memStream);
userImage.Source = image;
});
}
}
}
МЕТОД 2
private async void SetImage()
{
await Task.Delay(1);
byte[] fullViewImageBytes = Utils.GetImageFromStorage(fileName);
if (fullViewImageBytes != null)
{
MemoryStream memStream = new MemoryStream(fullViewImageBytes);
BitmapImage image = new BitmapImage();
image.SetSource(memStream);
userImage.Source = image;
}
}
Ни один из них на самом деле используют силу за асинхронной-ОЖИДАНИЕ. Во всяком случае, 'GetImageFromStorage' должен быть асинхронной операцией, и это, вероятно, единственное, что нужно ждать. Обратите внимание, что вы должны иметь подпись async Task. –