我正在閱讀有關異步等待編程,我很困惑在一個場景中,我想使一個函數異步運行。例如,我想在我的用戶界面上顯示圖像。所以,在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