0

updater.SearchByFunctionName 在 5-10 秒后返回,我想在进度条工作时增加它的值,但它永远不会停止。

我是线程新手,所以也许这是非常基本的东西,我不知道。

           Thread t = new Thread(delegate()
            {
                updater.SearchByFunctionName(testsuiteBox.SelectedValue.ToString(), functionNameBox.Text);
            });

            t.Start();

            progressBar.Value = 0;


            while(t.IsAlive)
            {

                Thread.Sleep(1000);

                if (progressBar.Value >= 200 )

                    {

                        progressBar.Value = 0;
                    }

                    progressBar.Value += 20;
            }
4

1 回答 1

3

您正在阻止 UI 线程,这会阻止对进度条的任何更新。

您应该使用Timer, 将事件附加到Tick事件并在其中放置代码以更新进度条。

您似乎也在手动制作 Marquee 风格的进度条。 ProgressBar对此内置支持。您只需添加:

myProgressBar.Style = ProgressBarStyle.Marquee;

您可以将其设置MarqueeAnimationSpeed为合适的值。之后,您无需为此做任何事情。

于 2012-09-21T13:37:29.433 回答