在单独的UI线程中不断更新主线程的工作状态
2010-12-23 11:20
155 查看
当程序在进行一项耗时的工作时,加上一个UI显示当前的进度,这样可以避免让用户等到不耐烦,客户可能以为死机了,可能狂点鼠标,造成更差的效率问题。对于这个问题,解决方法有多种:
1,都在主线程中进行,将耗时任务分解成小块,主线程处理,同时更新GUI,MSDN中有个很好的例子 "A Single-Threaded Application with a Long-Running Calculation";
2,工作线程为非GUI线程,负责处理耗时工作,主线程更新GUI。这种方法只有一个GUI线程,对多线程编程,这个是通常的选择;
3,主线程,工作线程都是UI线程,主线程处理耗时工作,工作线程负责处理UI更新提示。某些情况下,不得不这么做。这里详细介绍一个实现。
如何使用
1,都在主线程中进行,将耗时任务分解成小块,主线程处理,同时更新GUI,MSDN中有个很好的例子 "A Single-Threaded Application with a Long-Running Calculation";
2,工作线程为非GUI线程,负责处理耗时工作,主线程更新GUI。这种方法只有一个GUI线程,对多线程编程,这个是通常的选择;
3,主线程,工作线程都是UI线程,主线程处理耗时工作,工作线程负责处理UI更新提示。某些情况下,不得不这么做。这里详细介绍一个实现。
如何使用
public partial class Window1 : Window { readonly WaitPrompt wp = null; public Window1() { InitializeComponent(); wp = new WaitPrompt(this); } private void Begin_Click(object sender, RoutedEventArgs e) { wp.BeginWait(); wp.UpdateHint("hello world!"); } private void Send_Click(object sender, RoutedEventArgs e) { wp.UpdateHint(theWords.Text); } private void End_Click(object sender, RoutedEventArgs e) { wp.EndWait(); } }
相关文章推荐
- 更新主窗口控件的内容2:子线程工作时同时更新主线程内的控件内容
- 工作记录5月9日开始(不断更新中)
- mongodb常用基本命令(根据工作需要,不断更新)
- 工作中遇到的hql语句,不断更新中
- Android工作线程更新UI线程几种方法的区别与解析
- awk工作中常用命令介绍---不断更新中
- 工作中遇到的svn 命令总结----不断更新
- ios单独的页面支持横竖屏的状态调整,HTML5加载下(更新2)
- 需求获取的前期工作(不断更新)
- 零基础学习hadoop到上手工作线路指导(不断更新)
- 推荐一些软件,平时工作中可能会用到【不断更新】
- 工作中常用的Linux命令(不断更新中)
- 工作中可以用到的各类小工具(不断更新)
- 工作中用到的Linux命令-不断更新中
- 工作中记录的命令和知识点(不断更新)
- 常用的css3新特性总结(工作中不断更新中)
- 工作新手需要注意的:新人在试用期间的工作态度和心态很重要【摘自一位朋友的话,不断更新】
- 更新主窗口控件的内容1:子线程工作时同时更新主线程内的控件内容
- 开发中常用的工具类、通用 UI 的集合,目前在不断的更新中,尽可能的覆盖 Android 开发中通用的一些东西
- 经验总结:【不断更新】