Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net TPL数据流块中具有不同参数的相同委托_Vb.net_Delegates_Task Parallel Library_Tpl Dataflow_Addressof - Fatal编程技术网

Vb.net TPL数据流块中具有不同参数的相同委托

Vb.net TPL数据流块中具有不同参数的相同委托,vb.net,delegates,task-parallel-library,tpl-dataflow,addressof,Vb.net,Delegates,Task Parallel Library,Tpl Dataflow,Addressof,我的TPL数据流管道使用多个相同的块,唯一的区别是每个块都使用它的个人代理发送http请求。所以WebProxy这里有一个参数。我这样做是为了创建它们(概念上的简化示例,WebProxy替换为blockNum Integer): 我使用lambda表达式。这会引起一些麻烦。所以问题是:如何用委托函数替换它。我的意思是使用AddressOfSmthn。我需要以某种方式将blockNum传递给每个块 更新: 我不想使用lambda的原因有两种: 首先:我的lambda表达式太大,很难使用它并在编辑器

我的TPL数据流管道使用多个相同的块,唯一的区别是每个块都使用它的个人代理发送http请求。所以
WebProxy
这里有一个参数。我这样做是为了创建它们(概念上的简化示例,
WebProxy
替换为
blockNum Integer
):

我使用lambda表达式。这会引起一些麻烦。所以问题是:如何用委托函数替换它。我的意思是使用
AddressOf
Smthn。我需要以某种方式将
blockNum
传递给每个块

更新:

我不想使用lambda的原因有两种:

首先:我的lambda表达式太大,很难使用它并在编辑器中修改它:如果出现错误,整个表达式就会出错


第二:我想用数据流管道创建一个基类,并且只更改派生类中的块委托。

为什么不将所有代码从lambda移到一个实函数中呢。然后创建一个小lambda来捕获blockNum并将其传递给所述函数?

它会导致什么样的问题?
Private Sub CreateBlocks()
    Dim blocks As New List(Of TransformBlock(Of Integer, Integer))
    For i = 0 To 100
        Dim blockNum As Integer = i
        Dim block As New TransformBlock(Of Integer, Integer)(Function(_arg)
                                                                 Return _arg + blockNum
                                                             End Function)
        blocks.Add(block)
    Next
End Sub