【发布时间】:2020-04-19 15:13:13
【问题描述】:
我正在开发一个基于数据流模式的项目。为此,我正在使用来自 .NET 的 TPL Dataflow 库。
我最近才知道这个库,所以我还是个新手,知识很少。 我正在尝试构建几个块的管道。第一个块以其输入堆栈上的配置接口列表开始。基于每个配置对象,此块创建一个对象,该对象将从文件中加载 URL 列表。加载 URL 后,我想将它们中的每一个单独放置在此块的输出堆栈上。
我的问题是我似乎无法找到一种方法让转换函数接收输入对象并返回将单独放置在堆栈中的输出列表。我在这里遗漏了什么吗?
private async Task<Uri> LoadUrl(IUrlLoaderSettings loaderSettings)
{
IUrlLoader newLoader = CreateSeedLoader(loaderSettings);
List<Uri> urls = await newLoader.LoadAsync().ConfigureAwait(false);
foreach (Uri url in urls)
{
// each url loaded should be posted on output stack.
}
return null;
}
// Url Loader block.
TransformBlock<IUrlLoaderSettings, Uri> loaderBlock = new TransformBlock<IUrlLoaderSettings, Uri>(loaderSettings => LoadUrl(loaderSettings));
基本上我想要一个具有配置对象的输入堆栈,每个对象都会生成一个输出列表。我不希望将该列表直接放在输出堆栈中,因为我希望下一个块单独处理每个 URL,而不是作为一个块。
提前致谢!
【问题讨论】:
标签: c# .net web-scraping tpl-dataflow