C#的一些笔记(委托和反射)

多线程以及委托:

  private Thread mythread;
  mythread = new Thread(new ThreadStart(sayhello));
  mythread.Start();
  public delegate void SayhelloHander();//声明委托函数,关键字delegate
        private void sayhello()
        {
            //Console.WriteLine("hello world");
           // Console.ReadLine();
            if (textBox1.InvokeRequired == false)  //是不是在主进程?
            {
               // MessageBox.Show(Thread.CurrentThread.ManagedThreadId.ToString());
                textBox1.Text = "hello world";
            }
            else
            {
                SayhelloHander say = new SayhelloHander(sayhello);  //实例化托管
               // MessageBox.Show(Thread.CurrentThread.ManagedThreadId.ToString());
                textBox1.Invoke(say);   //进入托管函数
                //this.button1_Click(null,null);
                
            }
        }
反射:

            x = 10;
            assembly = Assembly.LoadFrom("ClassLibrary1.dll");   //载入dll
            // assembly.Class1 class1 = new assembly.Class1();
            Type j = assembly.GetType("ClassLibrary1.Class1");
            Object obj = Activator.CreateInstance(j);//实例化
           // j = obj.GetType();
            MethodInfo hello = j.GetMethod("hello");//获取方法
            hello.Invoke(obj,null); //调用方法
            MemberInfo [] z = j.GetMember("name");//获得属性
            string s = z[0].Name;  //属性的名字

            int valueReturn = (int)j.InvokeMember("name",
            BindingFlags.DeclaredOnly |
            BindingFlags.Public | BindingFlags.NonPublic |
            BindingFlags.Instance | BindingFlags.GetProperty,
            null,
            obj,
            null);  //获得属性的值


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值