您的位置:首页 > 产品设计 > UI/UE

在单独的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更新提示。某些情况下,不得不这么做。这里详细介绍一个实现。

如何使用

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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: