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");
            }
  • 相关阅读:
    oob中程序的监视
    使用内联 XAML
    silverlight 导航注意点
    动画入门,用actionscript实现A*寻路算法【游戏自动寻路】 转
    Remoting 转
    XSD文件 转
    Security 转
    游戏开发(程序)职位招聘的一些感受和经验 转
    WCF 转
    WPF 转
  • 原文地址:https://www.cnblogs.com/longdb/p/7763915.html
Copyright © 2011-2022 走看看