如何防止你的UI出现了假死吗?

如果应用程序在UI线程上执行非UI线程的耗时处理时,会使应用程序界面的运行显得缓慢而迟钝,有时会出现应用程序“UI界面假死”的现象,这也会引起用户的不满。
 .NET的多线程技术将耗时操作从UI线程中分离到另外一个工作线程中,可以有效的提高应用程序的响应能力,而采用异步委托调用方法实现多线程的管理可以使得程序结构清晰,编程简单。

 

我们要明确,为什么要进行异步回调?众所周知,普通方法运行,是单线程的,如果中途有大型操作(如:读取大文件,大批量操作数据库,网络传输等),都会导致方法阻塞,表现在界面上就是,程序卡或者死掉,界面元素不动了,不响应了。异步方法很好的解决了这些问题,异步执行某个方法,程序立即开辟一个新线程去运行你的方法,主线程包括界面就不会死掉了。

 

 

这篇博文写的很不错。

http://www.360doc.com/content/10/0706/16/61151_37250247.shtml

http://www.cnblogs.com/shanechow/archive/2010/05/04/1726924.html

http://www.cnblogs.com/shanechow/archive/2010/05/04/1726957.html

http://www.cnblogs.com/shanechow/archive/2010/05/04/1726934.html

 

 

 代码下载
 

时间: 2024-09-27 23:10:21

如何防止你的UI出现了假死吗?的相关文章

WCF 双工传输文件不稳定,UI假死,客户端响应超时等问题

问题描述 双工部分我是是这样写的,基于会话,Reentran,客户端CheckIn时,服务保存客户端的回调存储列表,传输文件时,服务端循环遍历列表,然后调用某一个客户端的上传文件回调方法(同步,分包同步上传),我的问题是,这样传输文件不太稳定,大概可以传输十几个G以后,软件UI就会假死,客户端会出现等待响应超时的问题请各位大人教我,就我,这问题解决不了,就要被领导K死了... 解决方案 解决方案二:该回复于2011-12-02 08:14:20被版主删除

HTML 5 Web开发:防止浏览器假死的方法

一个浏览器至少存在三个线程:js引擎线程(处理js).GUI渲染线程(渲染页面).浏览器事件触发线程(控制交互). JavaScript引擎是基于事件驱动单线程执行的,JS引擎一直等待着任务队列中任务的到来然后加以处理,浏览器无论再什么时候都只有一个JS线程在运行JS程序. GUI 渲染线程负责渲染浏览器界面,当界面需要重绘(Repaint)或由于某种操作引发回流(reflow)时,该线程就会执行.但需要注意 GUI渲染线程与JS引擎是互斥的,当JS引擎执行时GUI线程会被挂起,GUI更新会被保

打造一个不会假死的稳定的Maxthon2

  一.傲游2假死与崩溃的原因大全: 1.安全工具篇: 1)卡巴和N多软件有兼容性问题,解决方法只能换其他版本,并尽量把mx加入信任列表(有其他防火墙如果碰到假死也可以采用此方法能有效地降低假死崩溃的几率). 2)360监控开启可能会导致下载东西调用下载软件的时候崩溃.(仅在XP下,而且并非每个人都会这样,我个人就不会). 2.输入法篇: 输入法是最有可能导致假死的原因之一,原因是很多输入法都不支持傲游2的ui多线程功能,幸好,随着今年几大输入法的升级,这些问题都解决了.当然,你硬是不升级或不换

process-C# winform 执行主程序 页面假死 假死,进度条无法显示

问题描述 C# winform 执行主程序 页面假死 假死,进度条无法显示 现有一个程序,winform.在主页面中有一个button,button触发调用外部一个bat file bat file执行完会将结果反馈到主页面的UI上.我希望在bat 运行期间,有一个进度条显示. 但是由于我button中调用的bat file是用process 调用的.所以UI假死,导致进度条无法加载. Process process = new Process(); process.StartInfo.Wind

IE浏览器假死问题的解决办法

1)首先排除病毒因素 如果电脑经常会出现IE假死的情况,首先我们进行的是对电脑进行全盘扫描,排除病毒破坏干扰. 2)升级IE浏览器 排除病毒干扰后,我们再来介绍下其他的解决办法,如果我们安装的浏览器版本过低,比如是IE6浏览器,可能会导致一些网页的兼容问题,建议大家升级到IE8浏览器试试,以前也遇到过IE浏览器经常会卡死的情况,但是升级浏览器版本后明显好多了. 3)清理一些垃圾IE插件 如今很多软件安装都会默认安装一些垃圾插件,这对浏览器稳定性容易造成破坏,解决办法是清理一些不常用的IE插件,清

开机假死 都是偷懒惹的祸

窜出来,打开任务管理器,"CPU使用"显示100%,单击开始菜单也没反应,基本上要等上几分钟以后才可以正常操作电脑.造成这种问题的主要原因就是开机时系统加载的自启动项太多,造成CPU超负荷运转造成的(快知道:程序总是假死怎么办?). 等电脑可以正常使用后,依次单击"开始"→"运行",在打开的"运行"对话框中输入"msconfig"并单击"确定"按钮打开"系统配置实用程序&quo

Windows画图程序假死的原因

尽管当前能后期编辑图片的软件很多,但笔者粘贴屏幕抓图.将BMP文件另存为JPG格式时,还是喜欢 使用Windows自带的画图程序.不过,在使用画图程序却遇到了奇怪的问题:当想保存图片时,只要指定 保存位置和文件名后点击"保存"按钮就会出现画图程序无响应,只能强制结束进程,因此造 成画图程序无法正常工作! 这是怎么回事呢?笔者还真头一次遇到,于是"搜畅刮肚"的来寻找画图程序"假死 "的真正原因-- 尝试一:莫非"画布"太大? 具

给系统大扫除 拒绝开机假死现象

开机后电脑基本上处于无反应状态,桌面半天不显示,系统托盘中的图标一个接一个的窜出来,打开 任务管理器,"CPU使用"显示100%,单击开始菜单也没反应,基本上要等上几分钟以后才可 以正常操作电脑.造成这种问题的主要原因就是开机时系统加载的自启动项太多,造成CPU超负荷运转造成的. 等电脑可以正常使用后,依次单击"开始"→"运行",在打开的 "运行"对话框中输入"msconfig"并单击"确定&qu

发邮件时Outlook假死的原因

发邮件,点击send时,常会遇到outlook假死的情况,原因是邮件格式的问题,outlook默认为HTML格式,在邮件中,用户间使用不同的邮件系统,如Exchange,Lotus等,内含特殊字符,造成outlook检查时无法通过,因此无法发出,有时会弹出:cannot send this item之类的提示,而有时是直接假死,动弹不得,只得从任务管理器中强行结束.遇到此种情况,只能在reply或forward邮件时,点Option--As HTML改为As Plain Text. 查看本栏目更