我正在尝试使用匿名函数创建一个新线程,但我一直在收到错误。这是我的代码:
New Thread(Function()
// Do something here
End Function).Start
以下是我得到的错误:
新:
语法错误
结束功能:
'结束功能'前面必须有匹配的'功能'。
答案 0 :(得分:42)
有两种方法可以做到这一点;
使用现有方法的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()
答案 1 :(得分:4)
在VB中称为lambda expression。语法完全错误,您需要实际声明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
答案 2 :(得分:1)
所谓的必须是一个不是子的函数。
单行(必须返回值):
Dim worker As New Thread(New ThreadStart(Function() 42))
多:
Dim worker As New Thread(New ThreadStart(Function()
' Do something here
End Function))