我找到了几个示例,说明如何使用BackgroundWorker更新UI控件。
例如以下代码:
BackgroundWorker backgroundWorker1 = new BackgroundWorker();
backgroundWorker1.WorkerReportsProgress = true;
//start the operation on another thread
private void btnStart_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}
//DoWork event handler is executed on a separate thread
private void backgroundWorker1_DoWork(object sender, DoWorkeventArgs e)
{
//a long running operation
for (int i = 1; i < 11; i++)
{
Thread.Sleep(2000);
backgroundWorker1.ReportProgress(i * 10);
}
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.value = e.ProgressPercentage;
}
我在这里找到的:
https://www.c-sharpcorner.com/UploadFile/Ashush/using-the-backgroundworker-component
问题是,我找到的所有示例都显示了如何更新窗体上的“仅一个"控件。例如,我给出的代码演示了如何更新progressBar值。
但这不是一个现实的情况,在现实世界中,我通常会想更新我的表单上的SEVERAL控件。
例如:
进度条1。值= 54;
列表框1。所选索引= 2;
按钮1.背景颜色=颜色.黄色;
图像1.左侧=图像1.左侧+20;
我如何修改我展示的代码,以便更新我在前面几行中给出的控件?一定有一个简单的方法可以做到这一点。顺便说一下,我的应用程序使用了几个线程,每个线程都必须在运行时**更新UI上的几个控件...
我希望我的问题已经很清楚了,谢谢。
编辑:
Neil建议我在这个帖子中找到解决方案:
How do I update the GUI from another thread?
但我看到那里的人推荐使用BackgroundWorker...这正是我要问的。
他们没有解释如何使用此方法来并行更新多个UI控件。
1条答案
按热度按时间bcs8qyzn1#
请尝试以下操作: