delegate void DelShowProgress(int Msg); //代理 //将对控件的操作写到一个函数中 public void ShowProgress(int para) { if (!progressBar.InvokeRequired) //不需要唤醒,就是创建控件的线程 //如果是创建控件的线程,直接正常操作 { progressBar.Value = para; } else //非创建线程,用代理进行操作 { DelShowProgress ds = new DelShowProgress(ShowProgress); //唤醒主线程,可以传递参数,也可以为null,即不传参数 Invoke(ds, new object[] { para }); } }