2
每次我从不是件其他线程更新我的程序的视图从被创造了,我用:调用最佳实践
if (this.table.InvokeRequired)
{
this.table.Invoke(new MethodInvoker(delegate
{
this.table.Controls.Add(newRow);
this.table.Controls.SetChildIndex(newRow, this.table.Controls.Count);
}));
}
else
{
this.table.Controls.Add(newRow);
this.table.Controls.SetChildIndex(newRow, this.table.Controls.Count);
}
尽管这种方法工作得很好,我怀疑它的最好-practice做到这一点,因为
this.table.Controls.Add(newRow);
this.table.Controls.SetChildIndex(newRow, this.table.Controls.Count);
这种方式基本上是用于调用,而不是调用相同。
任何想法,我可以改善呢?
如果你没关系使用PostSharp,我会推荐这[后](http://stackoverflow.com/questions/11183026/how-to-write-a-postsharp-invoke -aspect到简化-CRO SS-线程控制更新)。 – Matthias 2013-02-10 12:10:42
我会将通用代码放在Action /委托中,并将其传递给Invoke,或者在else中调用它。 – kenny 2013-02-10 12:14:31
我编辑了你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 – 2013-02-10 12:17:11