内容简介:翻译自:https://stackoverflow.com/questions/16035300/make-wpf-image-load-async
我想加载Gravatar-Images并将它们从代码后面设置为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?
谢谢!
我建议你在XAML的imgGravatar上使用Binding.在其上设置IsAsync = true,WPF将自动利用线程池中的线程来提取图像.您可以将解析逻辑封装到IValueConverter中,然后将电子邮件绑定为Source
在XAML中:
<Window.Resouces> <local:ImgConverter x:Key="imgConverter" /> </Window.Resource> ... <Image x:Name="imgGravatar" Source="{Binding Path=Email, Converter={StaticResource imgConverter}, IsAsync=true}" />
代码:
public class ImgConverter : IValueConverter { public override object Convert(object value, ...) { if (value != null) { BitmapImage bi = new BitmapImage(); bi.BeginInit(); bi.UriSource = new Uri( GravatarImage.GetURL( "http://www.gravatar.com/avatar.php?gravatar_id=" + value.ToString()) , UriKind.Absolute ); bi.EndInit(); return bi; } else { return null; } } }
翻译自:https://stackoverflow.com/questions/16035300/make-wpf-image-load-async
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- SpringBoot | :异步开发之异步调用
- 改进异步封装:处理带返回值的异步调用
- 异步发展流程 —— Generators + co 让异步更优雅
- 文件系统与异步操作——异步IO那些破事
- Opencv图像处理系列(六)—— 图像梯度
- opencv笔记(2):图像剪切和图像移位
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
精通数据科学:从线性回归到深度学习
唐亘 / 人民邮电出版社 / 2018-5-8 / 99.00元
数据科学是一门内涵很广的学科,它涉及到统计分析、机器学习以及计算机科学三方面的知识和技能。本书深入浅出、全面系统地介绍了这门学科的内容。 本书分为13章,最初的3章主要介绍数据科学想要解决的问题、常用的IT工具Python以及这门学科所涉及的数学基础。第4-7章主要讨论数据模型,主要包含三方面的内容:一是统计中最经典的线性回归和逻辑回归模型;二是计算机估算模型参数的随机梯度下降法,这是模型工......一起来看看 《精通数据科学:从线性回归到深度学习》 这本书的介绍吧!