当选项严格为OFF时,工作正常.ON,我得到重载解析失败:
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
Run Code Online (Sandbox Code Playgroud)
重载解析失败,因为无法使用以下参数调用可访问的"New":
'Public Sub New(start As System.Threading.ParameterizedThreadStart)':Option Strict On不允许缩小方法'Private Sub test2(boolTest As Boolean)'和委托'Delegate Sub ParameterizedThreadingStart(obj As Object)'之间的隐式类型转换.
'Public Sub New(start As System.Threading.ThreadStart)':方法'Private Sub test2(boolTest As boolean)'没有与委托'Delegate Sub ThreadStart()'兼容的签名.
我是新线程..没有参数的函数似乎很好,但WITH参数?强硬.我怎样才能做到这一点?我已经搜索过了,大多数时候只看java/js回答这个问题.
以这种方式启动线程时,您的函数必须具有一个或多个参数.如果指定一个参数,则必须来自类型Object.
在您的函数中,您可以简单地将此object参数转换为您的数据类型:
private sub startMe(byval param as Object)
dim b as Boolean = CType(param, Boolean)
...
end sub
Run Code Online (Sandbox Code Playgroud)
如果要传递多个参数,可以将它们放在一起,如下所示:
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
Run Code Online (Sandbox Code Playgroud)
要开始你的线程:
dim t as new Thread(AddressOf startMe)
dim p as new Parameters
p.paramSTR = "bar"
p.oaramINT = 1337
t.start(p)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15451 次 |
| 最近记录: |