1

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

ActionBlock<TInput> Constructor (Action<TInput>)

但是对于标题中的返回类型任务,我不确定 ActionBlock 对返回的任务做了什么。我认为这是为了以某种方式等待提供给构造函数的异步委托?我能抓住它吗?

4

1 回答 1

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 => 具有 type Func<String, Task>

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

于 2013-01-16T21:51:48.180 回答