C#跨线程时使用Delegate委托

匿名 (未验证) 提交于 2019-12-03 00:05:01

当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;             }         }

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!