我先前通過另一個構造函數中使用的ActionBlock:這是什麼構造函數:ActionBlock <TInput>構造函數(Func鍵<TInput,任務>)
ActionBlock<TInput> Constructor (Action<TInput>)
但對於一個在標題,有回鍵入Task,我不確定ActionBlock是如何處理返回的Task的。我認爲它以某種方式等待提供給構造函數的異步委託?我可以抓住它嗎?
我先前通過另一個構造函數中使用的ActionBlock:這是什麼構造函數:ActionBlock <TInput>構造函數(Func鍵<TInput,任務>)
ActionBlock<TInput> Constructor (Action<TInput>)
但對於一個在標題,有回鍵入Task,我不確定ActionBlock是如何處理返回的Task的。我認爲它以某種方式等待提供給構造函數的異步委託?我可以抓住它嗎?
好的,我應該猜到它是提供一個異步的代表。我一定對這個語法有點不熟悉。以下是一個這樣的代表的示例:
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);
}
});
所以這代表異步URL =>可以說具有的類型Func<String, Task>
。
的例子是:http://blogs.microsoft.co.il/blogs/bnaya/archive/2012/01/28/tpl-dataflow-walkthrough-part-5.aspx
是的,這可能是最常見的用法。但任何返回委託的Task都會執行,並且該塊將異步等待它完成。 – svick
你有沒有看它的文檔? – Bobson
是的,它非常稀疏,但我現在找到了答案(現在回答我自己的問題)。 – Elliot