我有一个自定义编写的后台任务管理器,它将Action作为参数,对其进行排队,等待执行线程空闲然后调用它。
现在我想做以下事情:
Dim lValue As Integer = 0I
For tIndex As Integer = 0 To 10
BackgroundTaskManager.QueueTask(New Action(Sub() DoSomething(lValue)))
lValue += 1
Next
这显然会导致一些奇怪的结果,因为lambda表达式是在一个不可预测的时刻调用的(每当一个线程可用时),所以 DoSomething-method 无法访问实际值我希望它有。
然而,将这些参数放入子 - 这需要一个Action(Of T,...) - 实际上并不是一个选项,因为我的后台任务管理器只接受没有参数的Action而我希望它保持不变方式(后台任务管理器不应该知道实际调用的内容)。
我正在寻找的是一种存储函数指针的方法,该函数指针已经过评估的参数值,可以通过简单的[FunctionWithParametersEvaluated]调用。[Invoke]。
知道如何实现这个目标吗?