Как я могу использовать ThreadPool, не делая Sub foo (o как объект) каждый раз? - PullRequest
2 голосов
/ 07 февраля 2010

Каждый раз, когда я хочу создать поток в ThreadPool, я делаю маленькую глупую функцию, как Worker_O ниже.

Sub Worker(ByVal i As Integer)
    'do important stuff
End Sub

Sub Worker_O(ByVal o as Object)
    Worker(CType(o, Integer))
End Sub

Sub MakeThread()
    Dim worker1 as new Threading.WaitCallback(AddressOf Worker_O))
    Threading.ThreadPool.QueueUserWorkItem(worker1)
End Sub

Есть ли в VB .net способ привести из Sub (i как целое число) к Sub (o как объект) без создания Worker_O? Worker_O мне безобразен.

Редактировать: Я использую Option Explicit On, и все предупреждения являются ошибками, как должен делать хороший программист.

1 Ответ

3 голосов
/ 07 февраля 2010

Лямбда может чисто решить это:

  Sub MakeThread()
    Threading.ThreadPool.QueueUserWorkItem(Function() Worker(42))
  End Sub

  Function Worker(ByVal arg As Integer) As Integer
    ' etc...
  End Function

Однако лямбды, которые могут вызывать Sub, не будут доступны до VS2010.

...