C# 从WPF中的backgroundworker更新progressbar
我正在尝试使用C# 从WPF中的backgroundworker更新progressbar,c#,multithreading,backgroundworker,C#,Multithreading,Backgroundworker,我正在尝试使用BackgroundWorker进行progressbar升级。最后的目标是显示背景搜索的进度,但我首先想通过做一个简单的模拟来了解进度条。代码如下: public MainWindow() { InitializeComponent(); worker = new BackgroundWorker(); // variable declared in the class worker.WorkerReportsPr
BackgroundWorker
进行progressbar升级。最后的目标是显示背景搜索的进度,但我首先想通过做一个简单的模拟来了解进度条。代码如下:
public MainWindow()
{
InitializeComponent();
worker = new BackgroundWorker(); // variable declared in the class
worker.WorkerReportsProgress = true;
worker.DoWork += new DoWorkEventHandler(worker_DoWork);
worker.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);
worker.RunWorkerCompleted += worker_RunWorkerCompleted;
}
private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
this.Title += " DONE";
}
private void worker_DoWork(object sender, DoWorkEventArgs e)
{
for(int j = 0; j <= 100; j++)
{
worker.ReportProgress(j);
Title += j.ToString();
Thread.Sleep(50);
}
}
void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
searchProgressBar.Value = e.ProgressPercentage;
}
public主窗口()
{
初始化组件();
worker=new BackgroundWorker();//类中声明的变量
worker.WorkerReportsProgress=true;
worker.DoWork+=新的doworkereventhandler(worker\u DoWork);
worker.ProgressChanged+=新的ProgressChangedEventHandler(backgroundWorker1\u ProgressChanged);
worker.RunWorkerCompleted+=worker\u RunWorkerCompleted;
}
私有void worker\u RunWorkerCompleted(对象发送方,RunWorkerCompletedEventArgs e)
{
此.Title+=“完成”;
}
私有void worker_DoWork(对象发送方,DoWorkEventArgs e)
{
对于(int j=0;j您忘记运行worker:
worker.RunWorkerAsync();
如果您试图更改UI内容
,则应将调用置于UI Dispatcher
上。您无法从后台线程修改UI对象
。请使用这些命令替换行-
App.Current.Dispatcher.Invoke((Action)delegate()
{
Title += j.ToString();
});
及
App.Current.Dispatcher.Invoke((Action)delegate()
{
Title = "Done";
});