ImageView有时无法成功加载图像

时间:2018-12-21 10:11:00

标签: c#

我想在uri的Winform图像上绑定一些图像。有时可以,但是有时不可以

[image.cs]

parameter

}

[image.xaml.cs]

public void DownloadImage(Uri Uri)
    {            
        BitmapImage bi = new BitmapImage();
        bi.BeginInit();            
        bi.CacheOption = System.Windows.Media.Imaging.BitmapCacheOption.OnLoad;
        bi.UriSource = Uri;            

        bi.DownloadCompleted += Bi_DownloadCompleted;            
        bi.EndInit();     
    }

private void Bi_DownloadCompleted(object sender, EventArgs e)
    {
        BitmapImage bi = new BitmapImage();
        bi = (BitmapImage)sender;
        img.Source = bi;

... <Image Source ="{Binding bi}" Name="img"/> ... 行下的标记断点之后,有时bi.EndInit();属性设置为true,然后才有效bi.IsDownloading,有时属性{false}设置为false,然后它也不起作用,Bi_DownloadCompleted。 / p>

当我在网址值上设置相同的Bi_DownloadCompleted时,也会发生这种情况。

1 个答案:

答案 0 :(得分:0)

Bi_DownloadCompleted以异步方式调用。因此,如果仅在bi.EndInit()行中设置一个断点,则可能图像仍在下载中,因此这就是为什么您将IsDownloading属性设置为true或false的原因。

尝试删除bi.EndInit();在DownloadImage中排成一行并设置以下内容:

private void Bi_DownloadCompleted(object sender, EventArgs e)
{
    BitmapImage bi = (BitmapImage)sender;
    if (bi != null)
    {
        bi.EndInit();
        img.Source = bi;
    }
}