请查看下面的我的TPL Dataflow网络方案。 有一个URL列表,一些Load块和一个Parse块。 加载块加载具有不同代理服务器的HTML页面,并且所有这些都链接到发生CPU绑定工作的Parse块。如果页面加载期间出现异常,则URL会重新添加到列表中。
我将URL发布到带有手工循环的加载块(在图片上)。 我的问题:是否有任何块类型,可以帮助选择加载块来发布URL而不是我的手工制作周期?例如,它会使用.InputCount< = 2。
将URL发布到第一个加载时钟还有一个。在数据流执行期间,代理服务器可能不可用。我想如果我放置一个BufferBlock而不是URL List,那么如果有这样的能力,我将能够动态地将LoadBlocks与来自此BufferBlock的死代理链接。那么有没有办法动态地从网络中取消链接?
答案 0 :(得分:4)
是否有任何块类型,可以帮助选择加载块来发布URL到我的手工制作周期?例如,它会使用.InputCount< = 2。
将URL发布到第一个加载时钟
您可以做的是拥有一个链接到所有加载块的BufferBlock
。然后,您可以将加载块的BoundedCapacity
设置为类似3(在输入和输出队列中处理1个项目+ 2)。通过此设置,项目将在BufferBlock
中等待,直到其中一个加载块中的空间可用。
有没有办法从网络中动态取消链接?
是的,LinkTo()
会返回IDisposable
,可用于销毁该链接(通过调用Dispose()
)。