2013-04-20 2 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

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