zoukankan      html  css  js  c++  java
  • c#委托教程干货

    委托这两天多少看懂点了,但是容易脑子发晕,总结下

    委托就是声明一个对象 让他帮助其他程序进行执行。如下进行了一个跨线程显示的richbox。我将使用各种方法进行显示。

     1         //声明 命名委托  无返回值
     2         delegate void MsgHandler(string txt);
     3         //MsgHandler msgdele, msgdels, msglambda;
     4 
     5         private void Form1_Load(object sender, EventArgs e)
     6         {
     7             //将方法放到线程中
     8             Thread trd = new Thread(new ThreadStart(Start));
     9             trd.Start();
    10         }
    11 
    12         void Start()
    13         {
    14             //命名方法实例化
    15             MsgHandler msgdele = new MsgHandler(MsgShow);
    16             
    17             //使用命名方法
    18             //msgdele("命名方法");             //线程内调用
    19             rbox.Invoke(msgdele,"命名方法");   //线程外调用
    20 
    21             //匿名方法  委托类型  委托变量 = delegate (【参数列表】){代码块};
    22             MsgHandler msgdels = delegate(string txt)
    23             {
    24                 MsgShow(txt);
    25             };
    26             
    27             
    28             //线程内调用
    29             //msgdels("匿名方法");
    30             
    31             //线程外调用
    32             rbox.Invoke(msgdele, "匿名方法");
    33             
    34             
    35             //lambda 声明方法
    36             MsgHandler msglambda = p => { MsgShow(p); };
    37             //msglambda("lambda");
    38 
    39             //线程外调用
    40             rbox.Invoke(msglambda, "lambda");
    41         }
    42 
    43 
    44         //执行方法
    45         private void MsgShow(string txt)
    46         {
    47             //和正常使用一样
    48             rbox.AppendText(txt + "
    ");
    49         }

     使用匿名委托的方式调用匿名方法

    1             //匿名方法调用
    2 
    3             Action<string> d = (string p) => { rbox.AppendText(p + "
    "); };
    4             rbox.Invoke(d, "输出");
    5 
    6             //匿名委托调用
    7 
    8             rbox.Invoke(new Action<string>(p => { rbox.AppendText(p + "
    "); Thread.Sleep(1000); }), "输入");
  • 相关阅读:
    【javascript基础】JS计算字符串所占字节数
    mysql设置有外键的主键自增及其他
    spring AOP简单实现代码存放
    Dockerfile指令及docker的常用命令
    ubuntu 16.04 jenkins pipline的实现 最终docker启动服务
    ubuntu16.04 docker安装
    ubuntu16.04 nginx安装
    ubuntu14.04 spring cloud config server + gradle搭建
    ubuntu14.04 python2.7安装MySQLdb
    flask初次搭建rest服务笔记
  • 原文地址:https://www.cnblogs.com/uddgm/p/6221724.html
Copyright © 2011-2022 走看看