如何使用BeginInvoke for button.PerformClick()从另一个线程 - 跨线程调用

时间:2014-01-19 17:50:37

标签: c# .net multithreading button click

我有一个方法:

 private void RecordButton_Click(object sender, EventArgs e) {

  }

以及其他线程调用的另一种方法:

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

我得到一个异常,表明在另一个线程中调用PerformClick(),因此我应该进行跨线程调用。我应该写什么代替PerformClick()

1 个答案:

答案 0 :(得分:2)

这里如何通过传递此异常

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

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

               RecordButton.PerformClick();
            }

        }

或者您可以使用BeginInvoke,它在创建控件的基础句柄的线程上异步执行指定的委托。

  private void raiseAlarm()
        {

            this.BeginInvoke(new Action(raiseAlarm)); 



        }