Search code examples
c#vb.netevent-handlinganonymous-methods

Anonymous methods - C# to VB.NET


I have a requirement to implement a single VB.NET instance of an application on a terminal server. To do this I am using code from the Flawless Code blog. It works well, except in the code is written in C# and uses an anonymous method which is not supported in VB.NET. I need to rewrite the following so that I can use it as an event in VB.NET.

static Form1 form;

static void singleInstance_ArgumentsReceived(object sender, ArgumentsReceivedEventArgs e)
    {
        if (form == null)
            return;

        Action<String[]> updateForm = arguments =>
            {
                form.WindowState = FormWindowState.Normal;
                form.OpenFiles(arguments);
            };
        form.Invoke(updateForm, (Object)e.Args); //Execute our delegate on the forms thread!
    }
}

Solution

  • You can use this code:

    Private Shared form As Form1
    
    Private Shared Sub singleInstance_ArgumentsReceived(ByVal sender As Object, ByVal e As ArgumentsReceivedEventArgs)
        If form Is Nothing Then Return
        form.Invoke(New Action(Of String())(AddressOf updateFormMethod), e.Args)
    End Sub
    
    Private Shared Sub updateFormMethod(ByVal arguments As String())
        form.WindowState = FormWindowState.Normal
        form.OpenFiles(arguments)
    End Sub