Action<> multiple parameters syntax clarification

action, c#, notifyicon

Solution

You need to first assign your anonymous method to the `Action` variable, then invoke it with the arguments passed in to the method:

private void NotifyUser(string message, BalloonTip.BalloonType ballType)
{
    Action<string, BalloonTip.BalloonType> act = 
        (m, b) => BalloonTip.ShowBalloon(m, b);

    act(message, ballType);
}

In this case, since the arguments expected by your `Action` variable are identical to those of the encapsulated method, you may also reference the method directly:

private void NotifyUser(string message, BalloonTip.BalloonType ballType)
{
    Action<string, BalloonTip.BalloonType> act = BalloonTip.ShowBalloon;

    act(message, ballType);
}

Problem

Sometimes I can't understand the simplest things, i'm sure it's in my face, i just fail to see it. Im trying to create a delegate for a method in this simple class: ``` public static class BalloonTip { public static BalloonType BalType { get; set; } public static void ShowBalloon(string message, BalloonType bType) { // notify user } } ``` Now, this Action<> is supposed to create the delegate without actually declaring one with the keyword "delegate", did I understand correctly? Then: ``` private void NotifyUser(string message, BalloonTip.BalloonType ballType) { Action<string, BalloonTip.BalloonType> act; act((message, ballType) => BalloonTip.ShowBalloon(message, ballType)); } ``` This fails to compile. Why? (By the way, the reason why I need this delegate instead of directly calling ShowBalloon(), is that the calls must be made from another thread than the UI one, so I figured I need the Action<>) Thanks,

Original source