VB.NET中的线程委托等效项是什么?

问题描述 投票:0回答:3

我正在尝试从此堆栈溢出问题转换C#代码以在VB.NET中使用。我正在使用.NET Framework 4.0。WPF wait window

这里是代码:

Thread thread = new Thread(() =>
    {
      Window1 w = new Window1();
      w.Show();

      w.Closed += (sender2, e2) =>
      w.Dispatcher.InvokeShutdown();

      System.Windows.Threading.Dispatcher.Run();
    });

thread.SetApartmentState(ApartmentState.STA);
thread.Start();
c# vb.net .net-4.0
3个回答
2
投票
Dim thread As New Thread(Sub()
    Dim w As New Window1()
    w.Show()
    AddHandler w.Closed, Sub(sender2, e2) w.Dispatcher.InvokeShutdown()
    System.Windows.Threading.Dispatcher.Run()
End Sub)

thread.SetApartmentState(ApartmentState.STA)
thread.Start()

4
投票

您可以在VB中创建lambda表达式,如下所示:

Dim thread As New Thread(Sub()
                             ' ...
                         End Sub)

[VB.NET实际上没有像C#那样为匿名方法提供单独的语法,但是VB.NET中的lambda表达式的语法看起来更类似于C#匿名方法,而不是C#lambda表达式。


3
投票

您可能想阅读Lambda Expressions in VB.NET

Dim threadSub = Sub()
                  ...
                End Sub
Dim thread As New Thread(threadSub)
© www.soinside.com 2019 - 2024. All rights reserved.