Как получить параллельные расширения для запуска функции с двумя входными параметрами? - PullRequest
0 голосов
/ 17 декабря 2009

Я очень старался заставить это работать и не повезло. Как получить параллельные расширения для запуска функции с двумя входными параметрами? Я использую более свежую версию, Reactive Extensions с платформой 3.5.

Мне нужно, чтобы расширения запускались act (или функцией ProcessOrder ), но, что бы я ни пытался, я не могу заставить это сделать.

Dim act As New System.Action(Of Int32, Date)(AddressOf ProcessOrder)
act(CInt(RowA("ID")), RunDate)
Tasks.Task.Factory.StartNew(act)

Раньше я мог делать следующее:

Dim A(0) As Object
A(0) = CInt(RowA("ID"))
A(1) = RunDate
Tasks.Task.Create(AddressOf ProcessOrder, A)

Но это больше не поддерживается

1 Ответ

1 голос
/ 17 декабря 2009

Создайте небольшой класс, который имеет два параметра в качестве свойств и имеет метод для класса, который действует на эти свойства.

Public Class ProcessClass
    Private _p1 As Integer
    Private _p2 As Date
    Public Sub New(ByVal p1 As Integer, ByVal p2 As Date)
        Me._p1 = p1
        Me._p2 = p2
    End Sub
    Public Sub ProcessOrder()
        Trace.WriteLine(String.Format("{0}:{1}", _p1, _p2))
    End Sub
End Class

А затем вызвать его:

    Dim Obj As New ProcessClass(1, DateTime.Now())
    Dim Act As New System.Action(AddressOf Obj.ProcessOrder)
    System.Threading.Tasks.Task.Factory.StartNew(Act)
...