为什么你不能将匿名方法作为参数传递给BeginInvoke
方法?我有以下代码:
private delegate void CfgMnMnuDlg(DIServer svr);
private void ConfigureMainMenu(DIServer server,)
{
MenuStrip mnMnu = PresenterView.MainMenu;
if (mnMnu.InvokeRequired)
{
mnMnu.BeginInvoke((CfgMnMnuDlg)ConfigureMainMenu,
new object[] { server});
}
else
{
// Do actual work here
}
}
我试图避免声明代理。为什么我不能像下面这样写呢?或者我可以吗,只是我无法找出正确的语法?下面的代码会生成以下错误:
参数类型“匿名方法”不能赋给类型“System.Delegate”的参数
当然,这是正确的,但是否有其他语法可以使用,以此避免必须声明单独的委托才能使用BeginInvoke()
?(能够实现这一点将与在任何其他地方使用匿名方法/lambda来代替显式委托的概念非常契合。)
private void ConfigureMainMenu(DIServer server,)
{
MenuStrip mnMnu = PresenterView.MainMenu;
if (mnMnu.InvokeRequired)
{
mnMnu.BeginInvoke( // pass anonymous method instead ?
delegate(DIServer svr) { ConfigureMainMenu(server);},
new object[] { server});
}
else
{
// Do actual work here
}
}