When option strict is OFF, works fine. ON, I get overload resolution failure:
Dim _thread1 As Thread
Private Sub test2(boolTest As Boolean)
' Do something
End Sub
'
Private Sub test()
_thread1 = New Thread(AddressOf test2)
_thread1.Start(True)
End Sub
Overload resolution failed because no accessible 'New' can be called with these arguments:
'Public Sub New(start As System.Threading.ParameterizedThreadStart)': Option Strict On does not allow narrowing in implicit type conversions between method 'Private Sub test2(boolTest As Boolean)' and delegate 'Delegate Sub ParameterizedThreadingStart(obj As Object)'.
'Public Sub New(start As System.Threading.ThreadStart)': Method 'Private Sub test2(boolTest As boolean)' does not have a signature compatible with delegate 'Delegate Sub ThreadStart()'.
I'm new to threading .. a function without parameters seems just fine, but WITH parameters? Tough. How can I do this? I searched already and mostly see java/js only answering this question.
You should follow al-eax's answer, but another way would be to not pass parameters in the
Thread.Start()
function at all, but rather evaluate it in thetest
sub......or declare it as a global variable...
When you start a thread this way your function must have one or less parameters. If you specify one parameter, it must be from type
Object
.In your function you can simply cast this object parameter to your datatype:
When you want to pass multiple parameters, you can put them together into a class like this:
To start your Thread:
It looks like it's because the method you're delegating to has a Boolean parameter: '...does not allow narrowing...' Change the signature to use Object.