[英]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.