我知道当从任何非UI线程操纵UI控件时,必须将调用调度到UI线程以避免问题。一般的共识是应该使用测试InvokeRequired,并且如果为true,则使用.Invoke来执行调度。
这导致了很多看起来像这样的代码:
private void UpdateSummary(string text)
{
if (this.InvokeRequired)
{
this.Invoke(new Action(() => UpdateSummary(text)));
}
else
{
summary.Text = text;
}
}
我的问题是:我能够省略InvokeRequired测试,直接调用Invoke吗?像这样:...
private void UpdateSummary(string text)
{
this.Invoke(new Action(() => summary.Text = text));
}
这样做有问题吗?如果有,那么有没有更好的方法来保持InvokeRequired测试,而不必在代码中到处复制粘贴这个模式?
Invoke
起作用。为了安全起见,始终检查InvokeRequired
。 - nawfal