当C#程序使用到多线程时,不同进程间不能相互调用,可使用委托来处理;
以下需求案例为:
Winform程序中有一个进度条和一个后台backgroundworkder,当后台进程完成每一个阶段时更新窗体中的进度条信息。
//在backgroundwork中变更ProcessBar的值 private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { // do something UpdateProcessBarAdd1(); } //创建委托 private delegate void UpdateProcessBarAdd1_Delegate(); private void UpdateProcessBarAdd1() { //此处采用递归的简写方法 if (progressBar1.InvokeRequired) { UpdateProcessBarAdd1_Delegate mDelegate = new UpdateProcessBarAdd1_Delegate(UpdateProcessBarAdd1); progressBar1.Invoke(mDelegate); //若需要传入参数,请参照如下: //progressBar1.Invoke(mDelegate,new object[] { "参数1","参数2","参数3"}); } else { progressBar1.Value += 1; } } 来源:51CTO
作者:谷凯Jump
链接:https://blog.csdn.net/u012523524/article/details/100854108