zoukankan      html  css  js  c++  java
  • C# Invoke用法

    假如winform构建GUI界面时,如果要在控件事件中响应函数中改变控件的属性,例如:某个按钮上的文本原先叫“打开”,单击之后按钮上的文本显示“关闭”,初学者往往会想当然地这么写:
    
    void ButtonOnClick(object sender,EventArgs e)
    
    {
    
        button.Text="关闭";
    
    }
    

      

    这样的写法运行程序之后,可能会触发异常,异常信息大致是“不能从不是创建该控件的线程调用它”。

    我们可以使用两种方法去解决这个问题
    this这种(Invoke方法需要创建一个委托。你可以事先写好函数和与之对应的委托)
    1.使用委托的方式
    void ButtonOnClick(object sender,EventArgs e)
    {
       this.Invoke(new EventHandler(delegate{

      button.Text = '关闭';

    })); }

    2.C#3.0以后有了Lamda表达式,使用以下这种方法
    void ButtonOnClick(object sender,EventArgs e)
    {
      
     this.Invoke(new Action()) =>
    {
      button.Text = '关闭';
    }));
    }




  • 相关阅读:
    scla-基础-函数-元组(0)
    scala-基础-映射(1)
    Scala-基础-数组(1)
    Scala-基础-函数(2)
    Scala-基础-函数(1)
    Scala-基础-流程控制语句
    Scala-基础-运算符
    机器猫工作笔记(持续更新中...)
    收集的URL
    苹果审核指南(中文)
  • 原文地址:https://www.cnblogs.com/chen1997/p/11916926.html
Copyright © 2011-2022 走看看