可参考http://bbs.csdn.net/topics/390377875中使用new Action<>的使用方式,替代delegate的申明。

public delegate void MyInvokeWarn(bool para);

public delegate void MyInvoke(Control control,string str);

//单个参数

public void enableWarn1(bool para)

{

  if (panelWarn1.InvokeRequired)

  {

    MyInvokeWarn _myinvoke = new MyInvokeWarn(enableWarn1);

    panelWarn1.Invoke(_myinvoke, new object[] { para });

  }

  else

  {

    panelWarn1.Visible = para;

  }

}

//两个参数

public void printMsg(Control control,string msg)

{

    if (control.InvokeRequired)

    {

       MyInvoke _myInvoke = new MyInvoke((ct, v) => { ct.Text = v; });

       control.Invoke(_myInvoke,new object[] {control,msg});

     }

    else

    {

       control.Text = msg;

     }

}

在Winform开发中,如果在多线程中操作某一个控件的赋值的时候

//先声明一个委托

public delegate void SetControlTextDelegate(Control control);

//设置控件的方法

public void SetControlText(Control control, string value)

{

  if (control.InvokeRequired)

  {

  //使用委托赋值

     control.Invoke(new SetControlTextDelegate((ct, v) => { ct.Text = v; }), new object[] { control, value });     }

  else

  {

     control.Text = value;

  }

}

最新文章

  1. OpenCASCADE General Transformation
  2. Play Framework 完整实现一个APP(十)
  3. HttpModule &amp; HttpHandler
  4. Codeforces Round #143 (Div. 2) E. Cactus 无向图缩环+LCA
  5. socket 粘包问题(转)
  6. TCP调试助手
  7. iOS学习笔记(01) - 泛型
  8. unity中调用其他脚本函数的方法(小白之路)
  9. [Spark內核] 第41课:Checkpoint彻底解密:Checkpoint的运行原理和源码实现彻底详解
  10. 基于阻塞队列的生产者消费者C#并发设计
  11. 蒙特卡诺近似与PBM
  12. python编程从入门到实践 alien invasion 项目源码
  13. 学习笔记---json和xml区别
  14. 温顾知新系列-JAVA网络编程系统(1)- 流
  15. Python2和Python3安装注意事项
  16. win10 hyper-v 外网设置
  17. 软件工程项目之摄影App(总结)
  18. Android数据存储五种方式
  19. 2017-2018-2 20155234『网络对抗技术』Exp6:信息收集与漏洞扫描
  20. stat用法:获取文件对应权限的数字

热门文章

  1. 11g OCM自动打补丁
  2. 新添加的DOM节点如何实现动画效果
  3. Python中面向对象的一些关于类变量与实例变量的理解
  4. git重要命令
  5. 201621123006 《Java程序设计》第2周学习总结
  6. SpringInAction--Bean的作用域
  7. Java基础学习-内部类
  8. CRect类 的介绍
  9. React-Native进阶_4.底部标签栏TabBar
  10. Windbg 调试工具32位/64位版本下载