我正在尝试使用匿名函数创建一个新线程,但我不断收到错误消息。这是我的代码:
New Thread(Function()
'Do something here
End Function).Start
这是我得到的错误:
新的:
语法错误
结束功能:
'End Function' 前面必须有一个匹配的 'Function'。
我正在尝试使用匿名函数创建一个新线程,但我不断收到错误消息。这是我的代码:
New Thread(Function()
'Do something here
End Function).Start
这是我得到的错误:
新的:
语法错误
结束功能:
'End Function' 前面必须有一个匹配的 'Function'。
有两种方法可以做到这一点;
用AddressOf
运营商来现有的方法
Sub MyBackgroundThread()
Console.WriteLine("Hullo")
End Sub
然后创建并启动线程;
Dim thread As New Thread(AddressOf MyBackgroundThread)
thread.Start()
或作为 lambda 函数。
Dim thread as New Thread(
Sub()
Console.WriteLine("Hullo")
End Sub
)
thread.Start()
它在 VB中称为lambda 表达式。语法都是错误的,您需要实际声明一个 Thread 类型的变量才能使用 New 运算符。并且您创建的 lambda 必须是您传递给 Thread 类构造函数的参数的有效替代品。其中没有一个接受返回值的委托,因此您必须使用 Sub,而不是 Function。一个随机的例子:
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
所谓的必须是功能而不是子。
单行(必须返回值):
Dim worker As New Thread(New ThreadStart(Function() 42))
多行:
Dim worker As New Thread(New ThreadStart(Function()
' Do something here
End Function))