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界面卡住了,
请大神告知这个问题该如何解决。。。 展开
我现在的做法是在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界面卡住了,
请大神告知这个问题该如何解决。。。 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询