我的 WPF MVVM 应用程序通过Webclient.DownloadFileAsync(url, fileLocation). 该过程顺利进行,下载图片时根本没有冻结。但是当我将图像文件呈现给用户时会出现问题 - 应用程序变得无响应。
下载文件后,我将图像文件分配给 BitmapImage:
public async void LoadFileToBitmapImage(string filePath)
{
_isDownloading = false;
await FileToBitmapImage(filePath);
}
public Task FileToBitmapImage(string filePath)
{
return Task.Run(() =>
{
var executableLocation = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var imageLocation = Path.Combine(executableLocation, filePath);
var bi = new BitmapImage();
bi.BeginInit();
bi.UriSource = new Uri(imageLocation);
bi.EndInit();
bi.Freeze();
Image = bi;
});
}
图片.cs:
private BitmapImage _image;
public BitmapImage Image
{
get => _image;
set
{
_image = value;
NotifyOfPropertyChange("Image");
}
}
XAML 图像绑定:
<Image Source="{Binding Image, IsAsync=True}" Margin="3"/>
下载图像并将其呈现给用户时会出现问题。图像越大,向用户呈现图像所需的时间越多,应用程序无响应的时间就越长。
当应用程序冻结以检查线程并获取以下信息时,我尝试单击暂停,不幸的是它没有为我提供任何信息。
任何帮助都感激不尽!
编辑
值得注意的是,在引发 PropertyChanged 事件之后,应用程序变得无响应,而不是之前。也许这与将图像渲染到 UI 有关?
杨魅力
鸿蒙传说
相关分类