C# 循环中的进度条

C# 循环中的进度条,c#,winforms,C#,Winforms,我有几个关于进度条和for循环的问题。 我承认我对这一切都很陌生,所以我希望我的问题有意义 我正在使用Microsoft Visual C#2010 Express WMA 我正在使用以下代码填充进度条 new ThreadStart(() => { Thread.Sleep(0); vProgressBar0.BeginInvoke( new Action(() => { vProgressB

我有几个关于进度条和for循环的问题。 我承认我对这一切都很陌生,所以我希望我的问题有意义

我正在使用Microsoft Visual C#2010 Express WMA

我正在使用以下代码填充进度条

new ThreadStart(() =>
{
    Thread.Sleep(0);

    vProgressBar0.BeginInvoke(
        new Action(() =>
            {
                vProgressBar0.Value = ((vTotal* 100) / vGames);
            }));

}));
backgroundThread0.Start();
我有很多进度条需要填写。它们被标记为vProgressBar0、vProgressBar1、vProgressBar2等。这段代码满足我的需要,但它相当重复 以填充所有进度条

new ThreadStart(() =>
{
    Thread.Sleep(0);

    vProgressBar0.BeginInvoke(
        new Action(() =>
            {
                vProgressBar0.Value = ((vTotal* 100) / vGames);
            }));

}));
backgroundThread0.Start();
我想使用一个值为“I”的“For”循环作为计数器来填充进度条

new ThreadStart(() =>
{
    Thread.Sleep(0);

    vProgressBar0.BeginInvoke(
        new Action(() =>
            {
                vProgressBar0.Value = ((vTotal* 100) / vGames);
            }));

}));
backgroundThread0.Start();
我可以用
this.Controls[vProgressBar+I].BeginInvoke()
替换“vProgressBar0.BeginInvoke”语句,它工作正常

我的问题是:我找不到一种方法将
vProgressBar0.Value=((vTotal*100)/vGames)
语句替换为任何在for循环中使用“I”值的语句。有什么想法吗


我是否能够将backgroundThread0用于for循环中的所有进度条,或者我是否也需要增加该值?(例如backgroundThread0、backgroundThread1等),因为我也很难使该值递增。

这是非常基本的,只需将
ProgressBar
实例放入数组中,并对其进行迭代即可。由于这非常简单,我建议不要使用
newthreadstart
,因为您需要更好地了解一般编程实践

private readonly ProgressBar[] _bars = 
    new[]
    {
        vProgressBar0, vProgressBar1, vProgressBar2, vProgressBar3
    };

public void StartProgress()
{
    for (int i = 0; i < _bars.Length; ++ i)
    {
        var progressBar = _bars[i]; // If "i == 0" this is the "vProgressBar0" instance.
        // Use it here...
    }
}
private readonly ProgressBar[]\u bars=
新[]
{
vProgressBar0、vProgressBar1、vProgressBar2、vProgressBar3
};
public void StartProgress()
{
对于(int i=0;i<_bar.Length;++i)
{
var progressBar=_bars[i];//如果“i==0”,这就是“vProgressBar0”实例。
//在这里使用它。。。
}
}

OMG,这是可怕的代码。。。这有太多的问题。你正在更新一个
线程
,真的吗?如果你想迭代了解进度条控件,把它们放在一个数组中。我想你可以制作一个数组或所有对象的列表,然后在列表中循环。