2013-03-01 44 views
0

我想轉換來自這個堆棧溢出問題的C#代碼在VB.NET中使用。我正在使用.NET Framework 4.0。 WPF wait windowVB.NET中的線程delagate的等價物是什麼?

下面是代碼:

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

的問題是顯而易見的。第6個字在標題:) – 2013-03-01 16:41:16

+0

大聲笑,我希望我回來做C#。 :) – 2013-03-08 19:10:40

回答

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() 
+0

謝謝戴夫。這正是我需要的。 – 2013-03-01 18:40:24

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) 
+0

+1優秀的鏈接。 – 2013-03-01 16:58:51

相關問題