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 = '關閉';
}));
}





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM