为什么不能将匿名方法作为参数传递给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
}
}
Run Code Online (Sandbox Code Playgroud)
我试图避免宣布代表.为什么我不能写下面的东西呢?或者我可以,我只是无法弄清楚正确的语法?以下目前生成:
参数类型'System.Delegate'不能赋予参数类型'匿名方法'
好吧,这当然是正确的,但我是否可以使用其他语法来做到这一点(避免为了使用而必须声明一个单独的委托BeginInvoke()?
(能够做到这一点将完全符合使用anon方法/ 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
}
}
Run Code Online (Sandbox Code Playgroud)