La barra de progreso se opera en el subproceso de la interfaz de usuario. Si necesita mostrar el progreso a través de la barra de progreso cuando procesa programas de múltiples subprocesos que consumen mucho tiempo, debe usar este método, es decir, operar el control a través de un subproceso que no sea de la interfaz de usuario .
//方法一
private void ProgressBegin()
{
Thread thread = new Thread(new ThreadStart(() =>
{
for (int i = 0; i <= 100; i++)
{
this.Dispatcher.BeginInvoke((ThreadStart)delegate { this.progressBar1.Value = i; }); //progressBar1是进度条控件的名字。
Thread.Sleep(100);
}
}));
thread.Start();
}
//方法二
private delegate void UpdateProgressBarDelegate(System.Windows.DependencyProperty dp, Object value);
private void beginImport()
{
radProgressBar1.Maximum = 1000;
radProgressBar1.Value = 0;
UpdateProgressBarDelegate updatePbDelegate = new UpdateProgressBarDelegate(radProgressBar1.SetValue);
for (int i = 0; i < 1000; i++)
{
Dispatcher.Invoke(updatePbDelegate, System.Windows.Threading.DispatcherPriority.Background, new object[] { System.Windows.Controls.ProgressBar.ValueProperty,Convert.ToDouble( i + 1) });
}
}
//ProgressBar 可写成:ProgressBarEdit
//Convert.ToDouble( i + 1) 可写成:value