Looking for c# Keywords? Try Ask4Keywords

C# Language ActionBlock


пример

(для каждого)

Этот класс можно логически мыслить в качестве буфера для обрабатываемых данных в сочетании с задачами обработки этих данных, причем «блок потока данных» управляет обоими. В своем самом основном использовании мы можем создавать экземпляры ActionBlock и «post»; делегат, предоставленный при построении 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");

Введение в поток данных TPL Стивена Туба