多个ProgressBars的多线程更新

时间:2012-09-14 21:36:06

标签: c# multithreading user-interface progress-bar invoke

我开发了一个可以处理数据的应用程序(在我的例子中是在视频上执行的图像算法)。我开发了不同的ProcessingMethod s。

有时会并行处理多个视频。每个进程都以单独的线程运行。

我有一个带有几个ProgressBar的GUI,每个处理数据的线程都有一个。

更新ProgressBar的好方法是什么?

目前,我的GUI正在为每个线程创建所有处理线程和一个ProgressBar。然后我将这些ProgressBar传递给线程,线程将它们传递给ProcessingMethod。然后ProcessingMethod将更新ProgressBar(使用Invoke())。

我有不同的ProcessingMethod。在每种方法中,我都有复制粘贴代码来更新ProgressBar。虽然我是编程新手,但我知道复制粘贴并不好。

什么是改善它的好方法?

2 个答案:

答案 0 :(得分:3)

创建一个名为UpdateProgressBar的方法,该方法将进度条及其值作为参数,并使用Invoke包装更新。您将使用不同的参数调用单个函数来替换复制粘贴。

答案 1 :(得分:0)

查看BackGroundWorker组件。它旨在从GUI运行线程,并为progressindicaton安全回调。