zoukankan      html  css  js  c++  java
  • C#中委托。

    委托(delegate):是一个类型。其实winform中控件的事件也是特殊的委托类型。

    如:

    自定义委托:自定义委托在winform中的用法。

    当要在子线程中更新UI时,必须通过委托来实现。

          private  delegate void myDelegate(string str);
            private void btbdelegate_Click(object sender, EventArgs e)
            {
                Task ta2 = Task.Factory.StartNew(() => DoWork());  
    
            }
    
            private void DoWork()
            {
                //显示委托。
                myDelegate mydele = SetText;// new myDelegate(SetText);//我觉得只是把地址赋值给了委托。
                int i = 0;
                while (i < 1000)
                {
                    btbdelegate.Invoke(mydele, i.ToString());
                    btbdelegate.Invoke(new Action(() => { btbdelegate.Text = i.ToString(); } ));//
                    i++;
                }
              
            }
            private void SetText(string str)
            {
                btbdelegate.Text = str;
            }

    .net 框架自带委托:

    1.Func委托类型

    Func是有返回值的泛型委托,可以没有参数,但最多只有16个参数,并且必须要有返回值。

          private void btbdelegate_Click(object sender, EventArgs e)
            {
                //Task ta2 = Task.Factory.StartNew(() => DoWork());
                FuncTest();
            }
            private void FuncTest()
            {
                Func<string, string> functest = FuncText;//FuncText方法返回值必须是string类型。
                btbdelegate.Text = functest("fun111");
            }
            private string FuncText(string str)
            {
                return str;
            }

     2.Action委托类型
    Action是没有返回值的泛型委托,可以没有参数,但最多只有16个参数。

         private void btbdelegate_Click(object sender, EventArgs e)
            {
                //Task ta2 = Task.Factory.StartNew(() => DoWork());
                FuncTest();
                ActionTest();
            }
            private void ActionTest()
            {
                Action<string, string> method = (str1, str2) => 
                { btbdelegate.Text = str1 + str2; };//方法体。
                method("11", "22");
            }
  • 相关阅读:
    FileItem类的常用方法
    spring mvc(注解)上传文件的简单例子
    Linux下安装Tomcat服务器和部署Web应用
    防止表单重复提交的几种策略
    Rancher 2.0 学习目录
    Prometheus 学习目录
    k8s学习目录
    python之路——目录
    Mac OS X生成RSA公钥和私钥
    Django设置 DEBUG=False后静态文件无法加载解决
  • 原文地址:https://www.cnblogs.com/longdb/p/7763915.html
Copyright © 2011-2022 走看看