我正在对计时器进行简单的GUI更新。如果我更新单个控件,哪种方法更好用? MethodInvoker是这样的:
this.Invoke((MethodInvoker)delegate
{
systemMode.Text = systemMode.ToString();
});
或创建一个这样的控件调用:
public void UpdateSystemMode()
{
if (systemMode.InvokeRequired)
{
UpdateSystemMode.Invoke(new
UpdateSystemModeDelegate(UpdateSystemMode));
}
else
{
systemMode.UpdateSystemMode();
}
}
显然,方法调用者预先有较少的代码,但哪一个是最佳实践?
答案 0 :(得分:2)
UpdateSystemMode.Invoke(new UpdateSystemModeDelegate(UpdateSystemMode));
和
this.Invoke((MethodInvoker)delegate
{
systemMode.Text = systemMode.ToString();
});
绝对一样 以及
this.Invoke((Action)(()=> systemMode.Text = systemMode.ToString()));
正确的方式:
public void UpdateSystemMode()
{
if (this.InvokeRequired)
this.BeginInvoke((Action)UpdateSystemMode);
else
systemMode.UpdateSystemMode();
}