Эти методы недоступны, SendAsync<T>
принимает только один T
, а RecieveAsync<T>
возвращает только один T
, а не массивы.
SendAsync<T>(T[])
T[] ReceiveAsync<T>()
Однако существует TryReceiveAll<T>(out IList<T> items)
и вы можете вызвать SendAsync<T>
в цикле, чтобы отправить массив в BufferBlock
или написать свой собственный метод расширения, что-то вроде этого:
public static async Task SendAllAsync<T>(this ITargetBlock<T> block, IEnumerable<T> items)
{
foreach(var item in items)
{
await block.SendAsync(item)
}
}
Обратите внимание, что SendAsync
возвращает логическое значение, указывающее на принятие сообщений, вы можете вернуть массив логических значений или просто вернуть, если какое-либо из них вернет false, но это ваше дело.
Скорее всего, было бы проще использовать BatchBlock<T>
что вы можете отправлять элементы как одиночные, используя цикл, но испускайте элементы партиями, что было бы проще, чем использовать TryRecieveAll
, если вы строите конвейер. BatchBlock Walkthrough и Пример BatchBlock