小编ell*_*rde的帖子

如何正确等待无法完成的操作

在我的应用程序中,我创建了一个类SerializableBitmapImage,它显示默认图像,而另一个图像从Internet下载.它还允许将下载的图像序列化为字节数组,因此不需要在每次应用程序启动时下载图像.我目前在"Card"类中有一个SerializableBitmapImage,它在卡数据完成下载时保存:

var resp = await AppData.API.GetCards();
if (resp != null)
{
    if (AppData.CardsData == null)
        AppData.CardsData = new CardsData();
    AppData.CardsData.Update(resp);
    AppData.SaveCards();
    FillCards();
}
Run Code Online (Sandbox Code Playgroud)

但是,有时SerializableBitmapImage中的图像在调用AppData.SaveCards()时没有完成下载,导致图像无法保存.所以,我正在寻找一种延迟保存的方法,直到下载图像为止.现在,我在SerializableBitmapImage的构造函数中下载图像,如下所示:

Image = new BitmapImage(defaultUri); //set to default while downloading
BitmapImage img = new BitmapImage { CreateOptions = BitmapCreateOptions.None };
img.ImageOpened += (sender, e) => //download successful, set Image to downloaded image
{
    Image = sender as BitmapImage;
    NotifyPropertyChanged("Image");
};
img.UriSource = downloadUri; //download the image
Run Code Online (Sandbox Code Playgroud)

我在SerializableBitmapImage中创建了一个Task来等待图像完成,但我不确定它是否以健康的方式完成它的工作.

public async Task WaitForImageDownload()
{
    while (Image == null || …
Run Code Online (Sandbox Code Playgroud)

c# asynchronous bitmapimage async-await

1
推荐指数
1
解决办法
631
查看次数

标签 统计

async-await ×1

asynchronous ×1

bitmapimage ×1

c# ×1