C# 递归调用:糟糕的风格?
下面是一个相当可怕的模式,我有时用它来做简单的调用。这个密码让我有点内疚,尽管我不知道为什么。这可怕吗?合理吗?以后会在我脸上爆炸吗C# 递归调用:糟糕的风格?,c#,winforms,invoke,C#,Winforms,Invoke,下面是一个相当可怕的模式,我有时用它来做简单的调用。这个密码让我有点内疚,尽管我不知道为什么。这可怕吗?合理吗?以后会在我脸上爆炸吗 public void myMethod(object args) { if (InvokeRequired) { Invoke(new MethodInvoker(delegate { myMethod(args); })); return; }
public void myMethod(object args)
{
if (InvokeRequired)
{
Invoke(new MethodInvoker(delegate
{
myMethod(args);
}));
return;
}
//Do Stuff
}
这是确保使用UI线程的同步上下文运行方法的一种非常常见的方法。这没什么错
(顺便说一句,这是.NET中的惯例,所以我将其改为
MyMethod
。鉴于这个问题是关于风格的,我觉得这值得一提。)没问题。一切都在一个地方。易于理解。我更喜欢这种方式:调用(新操作(myMethod))//我觉得可读性更好。@Homam:当函数名Invoke
与参数类型MethodInvoker
如此清晰地匹配时,我觉得我做得很好。我认为Eric Lippert说从调用方使用异步是更好的风格。当然,在您发布此答案时,这不是一个选项。