在VB.NET中创建一个新线程

Mat*_*ins 19 vb.net multithreading

我试图使用匿名函数创建一个新线程,但我一直在收到错误.这是我的代码:

New Thread(Function() 
    // Do something here
End Function).Start
Run Code Online (Sandbox Code Playgroud)

以下是我得到的错误:

新:

语法错误

结束功能:

'结束函数'必须以匹配的'函数'开头.

MrM*_*son 46

有两种方法可以做到这一点;

  1. 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)
  2. 或者作为lambda函数.

    Dim thread as New Thread(
      Sub() 
        Console.WriteLine("Hullo")
      End Sub
    )
    thread.Start()
    
    Run Code Online (Sandbox Code Playgroud)

  • 坦克哥们这有帮助 (2认同)

Han*_*ant 5

它在 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)