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 = '关闭';
    }));
    }




  • 相关阅读:
    Ubuntu16.04更新记
    「BZOJ2153」设计铁路
    [UVA-11995]I Can Guess the Data Structure!
    [UVA-11100] The Trip
    [UVA-11039]Children's Game
    [BZOJ1008][HNOI2008]越狱
    NOIP2018退役祭
    修马路
    [NOIP2005]过河
    [POJ1958][Strange Tower of Hanoi]
  • 原文地址:https://www.cnblogs.com/chen1997/p/11916926.html
Copyright © 2011-2022 走看看