简体   繁体   English

VB.NET 中线程委托的等价物是什么?

[英]What is the equivalent in VB.NET for a thread delegate?

I am trying to convert the C# code from this Stack Overflow question to be used in VB.NET.我正在尝试将此 Stack Overflow 问题中的 C# 代码转换为在 VB.NET 中使用。 I am using .NET Framework 4.0.我正在使用 .NET Framework 4.0。 WPF wait window WPF等待窗口

Here is the code:这是代码:

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

You can create a lambda expression in VB, like this:您可以在 VB 中创建一个 lambda 表达式,如下所示:

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

VB.NET doesn't really have a separate syntax for anonymous methods, like C# does, but the syntax for a lambda expression in VB.NET looks more similar to a C# anonymous method than to a C# lambda expression. VB.NET 并没有像 C# 那样真正为匿名方法提供单独的语法,但是 VB.NET 中 lambda 表达式的语法看起来更类似于 C# 匿名方法,而不是 C# lambda 表达式。

You might want to read Lambda Expressions in VB.NET您可能想阅读VB.NET 中的 Lambda 表达式

Dim threadSub = Sub()
                  ...
                End Sub
Dim thread As New Thread(threadSub)
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()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM