簡體   English   中英

如何使用BeginInvoke for button.PerformClick()從另一個線程 - 跨線程調用

[英]How to use BeginInvoke for button.PerformClick() from another thread - cross threaded call

我有一個方法:

 private void RecordButton_Click(object sender, EventArgs e) {

  }

在另一個線程調用的另一個方法中:

 private void raiseAlarm() {
                RecordButton.PerformClick();//EXCEPTION HERE
        }

我得到一個異常,表明在另一個線程中調用了PerformClick() ,因此我應該進行跨線程調用。 我應該寫什么代替PerformClick()

這里你怎么能通過這個例外

private void raiseAlarm()
        {
            if (this.InvokeRequired)
            {

                Action action = raiseAlarm;  
                this.Invoke( action); 
            }
            else
            {

               RecordButton.PerformClick();
            }

        }

或者您可以使用BeginInvoke,它在創建控件的基礎句柄的線程上異步執行指定的委托。

  private void raiseAlarm()
        {

            this.BeginInvoke(new Action(raiseAlarm)); 



        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM