Create a new thread in VB.NET
There's two ways to do this;
-
With the
AddressOf
operator to an existing methodSub MyBackgroundThread() Console.WriteLine("Hullo") End Sub
And then create and start the thread with;
Dim thread As New Thread(AddressOf MyBackgroundThread) thread.Start()
-
Or as a lambda function.
Dim thread as New Thread( Sub() Console.WriteLine("Hullo") End Sub ) thread.Start()
It is called a lambda expression in VB. The syntax is all wrong, you need to actually declare a variable of type Thread to use the New operator. And the lambda you create must be a valid substitute for the argument you pass to the Thread class constructor. None of which take a delegate that return a value so you must use Sub, not Function. A random example:
Imports System.Threading
Module Module1
Sub Main()
Dim t As New Thread(Sub()
Console.WriteLine("hello thread")
End Sub)
t.Start()
t.Join()
Console.ReadLine()
End Sub
End Module
What is called has to be a functinon not a sub.
Single line(has to return value):
Dim worker As New Thread(New ThreadStart(Function() 42))
Multiline:
Dim worker As New Thread(New ThreadStart(Function()
' Do something here
End Function))
Source: Threading, Closures, and Lambda Expressions in VB.Net