匿名メソッドをパラメーターとしてメソッドに渡せないのはなぜ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()
か?
(これを行うことができれば、明示的なデリゲートの代わりにアノン メソッド/ラムダを使用するという概念にうまく適合し、他の場所でもきれいに機能します。)
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
}
}