سؤال

أنا أبحث عن مثال لكيفية القيام بما يلي في VB.net باستخدام Parallel Extensions.

Dim T As Thread = New Thread(AddressOf functiontodowork)
T1.Start(InputValueforWork)

ما أواجهه هو كيفية تمرير المعلمة InputValueforWork إلى المهمة

Dim T As Tasks.Task = Tasks.Task.Create(AddressOf functiontodowork)

سيكون موضع ترحيب أي اقتراحات وربما مثال الترميز.

أندرو

هل كانت مفيدة؟

المحلول

وأنا تحل سؤالي الخاصة. لديك لتمرير في صفيف القيم.

Dim A(0) as Int32
A(0) = 1
Tasks.Task.Create(AddressOf TransferData, A)

نصائح أخرى

وليس بالضرورة الإجابة مفيدة للغاية وأنا أعلم، ولكن في C # هل يمكن أن تفعل ذلك مع إغلاق:

var T = Tasks.Task.Create( () => functionToDoWork(SomeParameter) )

المشكلة الحقيقية هنا هي ذلك VB9 لا يدعم Action<T>, ، وظائف فقط

يمكنك التغلب على هذا القيد من خلال وجود مساعد في C#، مثل هذا:

public class VBHelpers {
    public static Action<T> FuncToAction<T>(Func<T, object> f) {
        return p => f(p);
    }
}

ثم تستخدمه من VB مثل هذا:

Public Sub DoSomething()
    Dim T As Task = Task.Create(VBHelpers.FuncToAction(Function(p) FunctionToDoWork(p)))
End Sub

Public Function FunctionToDoWork(ByVal e As Object) As Integer
    ' this does the real work
End Function
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top