我已经写了一段时间的图形用户界面应用程序,我总是使用MethodInvoker + lambda函数来进行跨线程访问。
从我找到的示例中,我总是看到像这样的代码:
版本1
if (InvokeRequired)
{
Invoke(new MethodInvoker(() =>
{
Label1.Text = "Foobar";
});
}
else
{
Label1.Text = "Foobar";
}
然而这导致了代码重复——对我来说是一个很大的问题。
那么这有什么问题吗?
第二版
MethodInvoker updateText = new MethodInvoker(() =>
{
Label1.Text = "Foobar";
});
if (InvokeRequired)
{
Invoke(updateText);
}
else
{
updateText();
}
现在我把功能捆绑在一个变量中,在适当的时候使用Invoke或函数指针调用它。版本2在性能方面更差吗?或者使用匿名函数是不好的做法吗?
control.IsDisposed
和control.Disposing
的防护措施,使其适用于生产环境,再次感谢! - Nebula