C# 创建将单个输入转换为多个输出的TPL数据流转换块

C# 创建将单个输入转换为多个输出的TPL数据流转换块,c#,.net,web-scraping,tpl-dataflow,C#,.net,Web Scraping,Tpl Dataflow,我正在开发一个基于数据流模式的项目。为此,我正在使用.NET中的TPL数据流库 我是最近才了解这个图书馆的,所以我还是一个知识不多的新手。 我正试图建造一条由几个街区组成的管道。第一个块从其输入堆栈上的配置接口列表开始。此块基于每个配置对象创建一个对象,该对象将从文件加载URL列表。加载URL之后,我想将它们分别放在这个块的输出堆栈上 我的问题是,我似乎找不到一种方法让转换函数接收一个输入对象并返回一个输出列表,这些输出列表将单独放置在堆栈中。我是不是遗漏了什么 private async Ta

我正在开发一个基于数据流模式的项目。为此,我正在使用.NET中的TPL数据流库

我是最近才了解这个图书馆的,所以我还是一个知识不多的新手。 我正试图建造一条由几个街区组成的管道。第一个块从其输入堆栈上的配置接口列表开始。此块基于每个配置对象创建一个对象,该对象将从文件加载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,而不是作为一个块

提前感谢

您可能需要一个。该块为接收到的每个输入调用Func,并单独传播每个IEnumerable的生成项。块实现IPropagatorBlock接口。

您可能需要一个。该块为接收到的每个输入调用Func,并单独传播每个IEnumerable的生成项。该块实现IPropagatorBlock接口