每次我想在 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中有没有一种方法可以在不创建Worker_O的情况下从Sub(i作为整数)转换为Sub(o作为对象)? Worker_O 对我来说很丑。
编辑:我正在使用 Option Explicit On,所有警告都是错误,就像一个好的程序员应该做的那样。
最佳答案
lambda 可以干净地解决这个问题:
Sub MakeThread()
Threading.ThreadPool.QueueUserWorkItem(Function() Worker(42))
End Sub
Function Worker(ByVal arg As Integer) As Integer
' etc...
End Function
但是,可以调用 Sub 的 lambda 在 VS2010 之前才可用。
关于vb.net - 如何使用 ThreadPool 而不每次都创建 Sub foo(o as object) ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2216991/