我正在计时器上进行简单的GUI更新。如果我要更新单个控件,哪种方法更好?这样的MethodInvoker:

this.Invoke((MethodInvoker)delegate
{
  systemMode.Text = systemMode.ToString();
});


或像这样创建控件调用:

public void UpdateSystemMode()
{
    if (systemMode.InvokeRequired)
    {
         UpdateSystemMode.Invoke(new
             UpdateSystemModeDelegate(UpdateSystemMode));
    }
    else
    {
        systemMode.UpdateSystemMode();
    }
}


显然,方法调用程序的代码较少,但是哪种方法是最佳实践?

最佳答案

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();
}

07-27 14:07