ActionBlockT
(的 foreach)
可以將此類邏輯地視為要處理的資料的緩衝區,以及用於處理該資料的任務,其中資料流塊管理這兩者。在最基本的用法中,我們可以例項化一個 ActionBlock 並向其釋出資料; ActionBlock 構造中提供的委託將針對釋出的每個資料非同步執行。
同步計算
var ab = new ActionBlock<TInput>(i =>
{
Compute(i);
});
…
ab.Post(1);
ab.Post(2);
ab.Post(3);
將非同步下載限制為最多 5 個
var downloader = new ActionBlock<string>(async url =>
{
byte [] imageData = await DownloadAsync(url);
Process(imageData);
}, new DataflowBlockOptions { MaxDegreeOfParallelism = 5 });
downloader.Post("http://website.com/path/to/images");
downloader.Post("http://another-website.com/path/to/images");