递归调用:糟糕的风格?

时间:2010-10-18 19:19:29

标签: c# winforms invoke

下面是一个相当可怕的模式,我有时会将其用作简单调用的懒惰方式。这段代码让我感到有点内疚,即使我不确定为什么。这可怕吗?合理?以后会在我的脸上爆炸?

public void myMethod(object args)
{
    if (InvokeRequired)
    {
        Invoke(new MethodInvoker(delegate
        {
            myMethod(args);
        }));
        return;
    }
    //Do Stuff
}

2 个答案:

答案 0 :(得分:8)

这是确保使用UI线程的同步上下文运行方法的一种非常常见的方法。这没有什么不妥。

(侧面说明,使用pascal casing for methods是.NET中的惯例,因此我将其更改为MyMethod。鉴于此问题与 style 有关,我觉得这值得一提。)

答案 1 :(得分:1)

很好。一切都在一个地方。易于理解。