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