我想从后台代码加载Gravatar图像并将其设置为WPF Image-Control。所以代码看起来像这样:
imgGravatar.Source = GetGravatarImage(email);
GetGravatarImage是以下样子:
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.UriSource = new Uri( GravatarImage.GetURL( "http://www.gravatar.com/avatar.php?gravatar_id=" + email) , UriKind.Absolute );
bi.EndInit();
return bi;
不幸的是,当网络连接缓慢时,这会锁定GUI。有没有一种方法可以分配图像源并在后台加载图像而不阻塞UI?
谢谢!
ThreadPool
,因为你必须一直管理调度。这使得对于一个纯 MVVM 应用程序来说,它对我来说不够优雅。 - JanWBitmapImage
在后台线程上自动执行下载。 UI 仅在将图像数据加载到 UI 时挂起。 对于混淆,我感到抱歉。 下载是在将BitmapImage
分配为Source
而不是使用BeginInit()
后开始的。 因此,原始作者的代码应该可以正常工作。 所以也许与他在 UI 上使用的图像数量有关。 - JanW