我之前通过另一个构造函数使用了ActionBlock:
ActionBlock<TInput> Constructor (Action<TInput>)
但对于标题中的那个,返回类型为Task,我不确定ActionBlock对返回的Task执行的操作。我认为它是以某种方式等待提供给构造函数的异步委托?我可以抓住它吗?
答案 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