日期:2014-05-19  浏览次数:20817 次

关于进度显示
我在统计的时候用一个thread,然后想做一个显示进度的界面
该怎么做才不与原来的thread冲突?

------解决方案--------------------
用委托实现。如:
class Class1
{
public delegate void ProcessingHandler(int index,int count);

public event ProcessingHandler Processing;

Thread thread=new Thread(new ThreadStart(run));

public void Work()
{
thread.Start();
}

void run()
{
for (int i=0,j=1000;i <j;i++)
Processing(i,j);
}
}

然后在你的form中如下使用:
ProcessingHandler updateProgressBar=new ProcessingHandler(OnUpdateProgressBar);
Class1 objCls=new Class1();
objCls.Processing+=new ProcessingHandler(objCls_Processing);
objCls.Work();

void objCls_Processing(int index,int count)
{
this.Invoke(updateProgressBar,index,count));
}

void OnUpdateProgressBar(int index,int count)
{
pb.Maximnue=count;
pb.Value=index;
}