Почему вы не можете передать анонимный метод в качестве параметра методу 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
}
}