gpt4 book ai didi

c# - MethodInvoker 与 Control.Invoke

转载 作者:太空宇宙 更新时间:2023-11-03 11:34:11 25 4
gpt4 key购买 nike

我正在对计时器进行简单的 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();
}

关于c# - MethodInvoker 与 Control.Invoke,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6816416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com