我正在阅读有关异步等待编程,我很困惑在一个场景中,我想使一个函数异步运行。例如,我想在我的用户界面上显示图像。所以,在UI线程上,我调用了一个函数,它可以从存储中获取图像并将图像应用到UI上。如何使函数运行异步
这样做的正确方法是什么?
方法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'应该是一个异步操作,这可能是唯一需要等待的事情。请注意,您应该有一个“异步任务”签名。 – 2014-11-22 20:30:53