C# 我是否可以简单地使用委托,即使它可能不是必需的?

C# 我是否可以简单地使用委托,即使它可能不是必需的?,c#,multithreading,C#,Multithreading,即使可能不需要委托,我也可以简单地使用它吗?当调用控件。调用时,您不需要检查调用所需的,它会为您检查它 来自同一线程的Control.BeginInvoke有时很有用,它将调用放在消息队列的末尾,而不是立即调用 你在做什么真的不太清楚,无法给出具体的建议 查看示例代码,您只需要以下内容: WirelessGreenLight.Invoke(new MethodInvoker(redGreenLight)); 或者,如果无法更改呼叫者: public void redGreenLight()

即使可能不需要委托,我也可以简单地使用它吗?

当调用
控件。调用
时,您不需要检查
调用所需的
,它会为您检查它

来自同一线程的
Control.BeginInvoke
有时很有用,它将调用放在消息队列的末尾,而不是立即调用

你在做什么真的不太清楚,无法给出具体的建议


查看示例代码,您只需要以下内容:

WirelessGreenLight.Invoke(new MethodInvoker(redGreenLight));
或者,如果无法更改呼叫者:

public void redGreenLight()
{
    WirelessGreenLight.Invoke(new MethodInvoker(redGreenLightImpl));
}

private void redGreenLightImpl()
{
    // real work done here
}

我想你的意思是
BeginInvoke
我会考虑合并/重构一个更新方法,并且只调用一次(取决于if-Control.InvokeRequired)。我不理解这个问题@SLaks,Invoke也是一个调用回UI线程的选项。你能更清楚一点吗?你所说的委托方法是什么意思?你只是指调用一个委托吗?如果是这样的话,如何解决跨线程问题?你想通过另一个执行if/else的方法将该方法作为委托进行传递吗?@Peter:我想他们指的是对该方法的委托[参见第页的示例](保持UI和处理线程的安全)。谢谢Ben,我很抱歉我一直这么做,但我需要调用WirelessRelight、MobileRelight、,手机灯光也很亮。。即4个控件中的任意一个。。。我想知道我是否可以避免这么长的多个if的情况。@HelloWorld\u总是:No
if
s
redGreenLight
始终使用
Invoke
redGreenLightImpl
不需要
Invoke
,因为它完全在UI线程上运行。