When option strict is OFF, works fine. ON, I get overload resolution failure:
Dim _thread1 As Thread
Private Sub test2(boolTest As Boolean)
\' Do someth
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 the test
sub...
Dim _thread1 As Thread
Private Sub test()
If someTest = True then
_thread1 = New Thread(AddressOf test2)
_thread1.Start()
End If
End Sub
Private Sub test2()
/.../
End Sub
...or declare it as a global variable...
Dim _thread1 As Thread
Dim boolTest As Boolean
Private Sub test()
boolTest = True
_thread1 = New Thread(AddressOf test2)
_thread1.Start()
End Sub
Private Sub test2()
If boolTest = True Then
/.../
End If
End Sub
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:
private sub startMe(byval param as Object)
dim b as Boolean = CType(param, Boolean)
...
end sub
When you want to pass multiple parameters, you can put them together into a class like this:
public class Parameters
dim paramSTR as String
dim paramINT as Integer
end class
private sub startMe(byval param as Object)
dim p as Parameters = CType(param, Parameters)
p.paramSTR = "foo"
p.paramINT = 0
...
end sub
To start your Thread:
dim t as new Thread(AddressOf startMe)
dim p as new Parameters
p.paramSTR = "bar"
p.oaramINT = 1337
t.start(p)
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.