一般来说,涉及到数据量比较大的操作的时候会开个单独的线程去处理,这时候显示进度条就成了问题
还好虽然麻烦点,却也不难实现,用事件来实现是比较好的
在处理的线程中定义一个事件
public event EventHandler upLoadEvent;
在执行操作的时候同时去不停地触发事件
upLoadEvent.Invoke(一个object,一个EventArgs的实例);
然后要订阅事件消息
线程所在类 threadClass = new 线程所在类();
threadClass.upLoadEvent += new EventHandler(threadClass_upLoadEvent);
当事件执行的时候就会触发threadClass_upLoadEvent这个方法
但是要操作进度条现在还不行,因为它们不在一个线程里面,直接操作是不安全的
线程间的操作就要用到委托
private delegate void uploadDelegate(int 当前进度的数字);//带参数
//事件触发的方法里面就调用委托
void threadClass_upLoadEvent(object sender, EventArgs e)
{
int 当前进度的数字= Convert.ToInt32(sender);
uploadDelegate up = new uploadDelegate(一个方法名称,操作进度条);
this.Invoke(up, 当前进度的数字);
}
//现在可以操作进度条了
private void 操作进度条(int 当前进度的数字)
{
............
}
[[it] 本帖最后由 shmilylee 于 2008-10-10 11:29 编辑 [/it]]