我之前通过另一个构造函数使用了 ActionBlock:
ActionBlock<TInput> Constructor (Action<TInput>)
但是对于标题中的返回类型任务,我不确定 ActionBlock 对返回的任务做了什么。我认为这是为了以某种方式等待提供给构造函数的异步委托?我能抓住它吗?
我之前通过另一个构造函数使用了 ActionBlock:
ActionBlock<TInput> Constructor (Action<TInput>)
但是对于标题中的返回类型任务,我不确定 ActionBlock 对返回的任务做了什么。我认为这是为了以某种方式等待提供给构造函数的异步委托?我能抓住它吗?
好的,我应该猜到它是为了提供异步委托。我一定对它的语法有点陌生。这是一个这样的代表的例子:
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