2013-04-20 24 views
4

如您所知,我們在vb.net中有一個新語法,可以創建內聯任務,以便我們可以異步運行它。vb.net - 如何將新任務聲明爲SUB,帶參數

這是正確的代碼:

 Dim testDeclaring As New Task(Sub() 

             End Sub) 
     testDeclaring.Start() 

,但現在我需要通過在子程序的參數,我無法找到該正確的語法。 有沒有可能?

回答

6

這是不可能的。但是,你可以只使用參數從目前的範圍:

Public Function SomeFunction() 

    Dim somevariable as Integer = 5 

    Dim testDeclaring As New Task(Sub() 
            Dim sum as integer = somevariable + 1 ' No problems here, sum will be 6 
           End Sub) 
    testDeclaring.Start() 

End Function 
+0

謝謝!這正是我所期待的。 順便說一句,它在我的上下文中引起一些奇怪的行爲,但我想這是另一個話題的問題。 – newbeee 2013-04-20 11:58:41

9

如果你想傳遞一個參數,你可以做到這一點

Dim someAction As Action(Of Object) = Sub(s As Object) 
               Debug.WriteLine(DirectCast(s, String)) 
              End Sub 

    Dim testDeclaring As New Task(someAction, "tryme") 
    testDeclaring.Start() 
+0

如果有多個參數呢?有一個正確的方法,而不是傳遞一個ArrayList的參數? – Sdlion 2016-11-30 20:20:13