WPF进度条更新问题

我在主窗体中调用类Class1的方法Class1.Method1(),由于Method1的耗时很长,因此希望用进度条在主界面上显示计算进度。我现在的做法是在Class1中... 我在主窗体中调用类Class1的方法Class1.Method1(),由于Method1的耗时很长,因此希望用进度条在主界面上显示计算进度。
我现在的做法是在Class1中声明一个静态变量以指示进度,在主窗体调用Method1同时开启一个线程查询该静态变量并Dispatcher更新进度条,代码如下:

主窗口调用程序:
Thread thread = new Thread(new ThreadStart(ShowProgress));
thread.Start();
int result = _Countries.QuerybyTrajectory1(_trajectory);//Method1
thread.Abort();
Progress.Visibility = System.Windows.Visibility.Hidden;

线程程序:
private void ShowProgress()
{
while (true)
{
double value = Regions._progress;

Progress.Dispatcher.BeginInvoke(
System.Windows.Threading.DispatcherPriority.Send,
new DispatcherOperationCallback(delegate
{
Progress.Value = Progress.Value+1;
return null;
}),null);

Thread.Sleep(30);
}
}
但是结果是进度条根本没有变化,我在最后加上让进度条Hidden的一句,结果在Method1结束之后进度条也Hidden了,证明在Method1进行时UI界面卡住了,
请大神告知这个问题该如何解决。。。
展开
 我来答
阳光的雷咩咩
2015-05-27 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7835万
展开全部
  1. 你的线程里究竟做了什么耗时操作呢,我没看出来。

  2. Progress.Value是不断增加,确定最后的值代表进度条的最大值吗?是否有完成百分比?

  3. 考虑用BackgroundWorker,MSDN上有Winform的完整示例你先试试,熟悉后移植到WPF也很快

    https://msdn.microsoft.com/zh-cn/library/system.componentmodel.backgroundworker.aspx

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式