一个线程的进展怎么通过一个progressbar来动态显示反应它

一个线程的进展如何通过一个progressbar来动态显示反应它。
一个线程在进行数据处理。。有2000个点需要计算,这需要一段时间,,现在 想通过添加一个progressbar进度条 实时显示它的进程。  期间 解决不了这几个问题。。1. 每次计算出一个点 就对progressbar作图,想当然觉得计算完2000个点,进度条汇成100%。  但是效果不行,非常容易假死。 2。进度条显示我加了一个线程。每次计算出一个点 开始线程的progressbar作图,效果是发现原本挺快的就能画好图,现在反应的很慢。有很大的延迟 感觉。
简短代码如下:
private void button1(object sender, EventArgs e)
   {
                    t = new Thread(new ThreadStart(GetCCDData));
                    t.Start();
   }
private void GetCCDData()
{
for (int i = 0; i < 2000; i++)
                        {
                            DataList[i].Y = DataList[i].Y - BackgrndData[i].Y;
                            SetTextMessage(100 * i / 1999);
                        }
........
}
  public void SetTextMessage(int pos)
        {
            if (this.InvokeRequired)
            {
                SetPos setpos = new SetPos(SetTextMessage);
                this.Invoke(setpos, new object[] { pos });
            }
            else 
            {
                this.label10.Text = pos.ToString()+"%";
                this.progressBar1.Value = pos;
            }
        }
------解决方案--------------------
http://download.csdn.net/detail/caozhy/4832657
------解决方案--------------------
不要使用 Invoke,应该使用 BeginInvoke。

基本上,只是偶尔可能有使用 Invoke 的机会。都应该改为使用 BeginInvoke。