0

我正在尝试将这个 Stack Overflow 问题中的 C# 代码转换为在 VB.NET 中使用。我正在使用 .NET Framework 4.0。 WPF 等待窗口

这是代码:

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();
4

3 回答 3

4

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

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

VB.NET 并没有像 C# 那样真正为匿名方法提供单独的语法,但 VB.NET 中 lambda 表达式的语法看起来更像 C# 匿名方法,而不是 C# lambda 表达式。

于 2013-03-01T16:35:35.570 回答
3

您可能想阅读VB.NET 中的 Lambda 表达式

Dim threadSub = Sub()
                  ...
                End Sub
Dim thread As New Thread(threadSub)
于 2013-03-01T16:38:05.793 回答
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()
于 2013-03-01T17:13:20.577 回答