下面是一个相当可怕的模式,我有时会将其用作简单调用的懒惰方式。这段代码让我感到有点内疚,即使我不确定为什么。这可怕吗?合理?以后会在我的脸上爆炸?
public void myMethod(object args)
{
if (InvokeRequired)
{
Invoke(new MethodInvoker(delegate
{
myMethod(args);
}));
return;
}
//Do Stuff
}
答案 0 :(得分:8)
这是确保使用UI线程的同步上下文运行方法的一种非常常见的方法。这没有什么不妥。
(侧面说明,使用pascal casing for methods是.NET中的惯例,因此我将其更改为MyMethod
。鉴于此问题与 style 有关,我觉得这值得一提。)
答案 1 :(得分:1)
很好。一切都在一个地方。易于理解。