我有一个方法:
private void RecordButton_Click(object sender, EventArgs e) {
}
以及其他线程调用的另一种方法:
private void raiseAlarm() {
RecordButton.PerformClick();//EXCEPTION HERE
}
我得到一个异常,表明在另一个线程中调用PerformClick()
,因此我应该进行跨线程调用。我应该写什么代替PerformClick()
?
答案 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));
}