1

私の TPL Dataflow パイプラインは複数の同じブロックを使用します。唯一の違いは、それぞれが個人のプロキシを使用して http 要求を送信することです。ここWebProxyにパラメータがあります。私はそれらを作成するために次のように振る舞います (概念的な単純化された例を にWebProxy置き換えblockNum Integerます):

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

ラムダ式を使用しています。それはいくつかのトラブルを引き起こします。問題は、どうすればそれをデリゲート関数に置き換えることができるかということです。AddressOfつまり、 Smthnを使用します。blockNumどうにかして各ブロックに渡す必要があります。

アップデート:

ラムダを使いたくない理由には、次の 2 種類の問題があります。

まず、ラムダ式が大きすぎます。エディタで作業して変更するのは非常に困難です。何か問題があると、式全体がエラーになります。

2 番目: Dataflow パイプラインを使用して基本クラスを作成し、派生クラスのブロック デリゲートのみを変更したい。

4

1 に答える 1

3

すべてのコードをラムダから実際の関数に移動してみませんか。次に、blockNum をキャプチャして上記の関数に渡す小さなラムダを作成しますか?

于 2015-01-25T07:59:30.157 に答える