Mat*_*ins 19 vb.net multithreading
我试图使用匿名函数创建一个新线程,但我一直在收到错误.这是我的代码:
New Thread(Function()
// Do something here
End Function).Start
Run Code Online (Sandbox Code Playgroud)
以下是我得到的错误:
新:
语法错误
结束功能:
'结束函数'必须以匹配的'函数'开头.
MrM*_*son 46
有两种方法可以做到这一点;
与AddressOf
运营商一起使用现有方法
Sub MyBackgroundThread()
Console.WriteLine("Hullo")
End Sub
Run Code Online (Sandbox Code Playgroud)
然后创建并启动线程;
Dim thread As New Thread(AddressOf MyBackgroundThread)
thread.Start()
Run Code Online (Sandbox Code Playgroud)或者作为lambda函数.
Dim thread as New Thread(
Sub()
Console.WriteLine("Hullo")
End Sub
)
thread.Start()
Run Code Online (Sandbox Code Playgroud)它在 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
Run Code Online (Sandbox Code Playgroud)