1

我正在制作一个进度条作为我的 Silverlight 应用程序的一部分,当用户单击一个按钮时会触发它。现在,我只是让它在随机时间以随机增量进行更新,这样我就可以确保它按我的需要工作。更新 Progressbar 值的代码相当简单,但 Progressbar 的实际显示永远不会更新。我用于此的代码在这里:

Random randomGen = new Random();

while (submitProgress.Value < submitProgress.Maximum)
{
    System.Threading.Thread.Sleep(randomGen.Next(100, 500));
    submitProgress.Value += randomGen.Next(3, 7);
}

我用来创建进度条的 XAML 在这里:

<ProgressBar Grid.Row="2" Height="30" Width="400" IsIndeterminate="False" 
Minimum="0" Maximum="100" Value="0" Name="submitProgress"></ProgressBar>

需要明确的是,进度条在完成时确实会更新到其完成状态,但从开始到结束没有中间更新。如果您需要我提供更多信息,请告诉我。谢谢!

4

1 回答 1

2

您在哪个线程上运行该进程?如果您在主线程上运行,则 UI 在处理完成之前不会更新。我建议使用BackgroundWorker进行处理。然后在更新 UI 或更新绑定到 UI 的对象时,您将需要使用Dispatcher 。

于 2012-06-28T13:34:19.497 回答