Search code examples
vb.netmultithreadingdelegates

Using a delegate for thread start inside another Sub


What I've got is something like this:

Private Sub GiantLegacySub()

... lots of variables and legacy code...

    Dim somethingNew = New Func(of String, Boolean)(
        Function(stringy as String) As Boolean
            ... new code that uses the legacy variables ...
        End Function)

    Dim t = New Thread(AddressOf somethingNew)

End Sub

I am getting an error indicating that somethingNew is being seen as variable name and not a method name and is thus unacceptable by AddressOf. ( I know that somethingNew is a variable, just one that happens to contain a pointer to a method).

Is there a way to do this? I need to leave it inside of GiantLegacySub because of the shear volume of variables in its scope.


Solution

  • Based on Craig's guidance, this was the answer:

    Private Sub GiantLegacySub()
    
    ... lots of variables and legacy code...
    
        Dim somethingNew = Sub(stringy as String)
                ... new code that uses the legacy variables ...
            End Sub
    
        Dim t = New Thread(somethingNew)
        t.Start(someStringForStringy)
    
    End Sub