C#线程没有停止

时间:2012-09-21 13:33:13

标签: c# multithreading

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;
            }

1 个答案:

答案 0 :(得分:3)

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

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

您似乎也在手动制作Marquee样式进度条。 ProgressBar支持内置。您只需添加:

myProgressBar.Style = ProgressBarStyle.Marquee;

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