为什么不能将匿名方法作为参数传递给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()
?
(能够做到这一点将完全符合使用匿名方法/lamdas 代替显式委托的概念,这在其他任何地方都非常干净。)
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
}
}