这个构造函数是什么:ActionBlock <tinput>构造函数(Func <tinput,task =“”>)</tinput,> </tinput>

时间:2013-01-16 21:25:43

标签: c# task-parallel-library .net-4.5 tpl-dataflow

我之前通过另一个构造函数使用了ActionBlock:

ActionBlock<TInput> Constructor (Action<TInput>)

但对于标题中的那个,返回类型为Task,我不确定ActionBlock对返回的Task执行的操作。我认为它是以某种方式等待提供给构造函数的异步委托?我可以抓住它吗?

1 个答案:

答案 0 :(得分:3)

好的我应该猜到它是供应一个异步的代表。我一定不太熟悉它的语法。以下是一个这样的代表的例子:

var writer = new ActionBlock<string>(async url =>
{
    WebClient wc = new WebClient();
    // using IOCP the thread pool worker thread does return to the pool
    byte[] buffer = await wc.DownloadDataTaskAsync(url);
    string fileName = Path.GetFileName(url);

    string name = @"Images\" + fileName;

    using (Stream srm = File.OpenWrite(name))
    {
        await srm.WriteAsync(buffer, 0, buffer.Length);
    }
});

这样委托async url =&gt;可以说是Func<String, Task>类型。

示例来自:http://blogs.microsoft.co.il/blogs/bnaya/archive/2012/01/28/tpl-dataflow-walkthrough-part-5.aspx