تمرير القيم باستخدام Parallel Extensions وVB.net
-
06-07-2019 - |
سؤال
أنا أبحث عن مثال لكيفية القيام بما يلي في 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
لا تنتمي إلى StackOverflow