Описание тега tpl-dataflow

TPL Dataflow (TDF) - это библиотека.NET для создания параллельных приложений. Он продвигает проекты, ориентированные на акторов / агентов, с помощью примитивов для внутрипроцессной передачи сообщений, потока данных и конвейерной обработки. TDF основан на TPL (Task Parallel Library) в.NET 4 и интегрируется с поддержкой асинхронного языка в C#, Visual Basic и F#. В TDF отсутствует соединение / слияние по ключу (например, SSIS) и временное оконное управление (доступно в Rx).
1 ответ

Конструктор по умолчанию TPL BufferBlock: значение DataFlowBlockOptions

Если вы используете конструктор по умолчанию для создания TPL BufferBlockявляются DataFlowBlockOptions неограничен? Другими словами, что такое BoundedCapacity из BufferBlock? Как указано в этом ответе SO, невозможно ни запросить, ни изменить значени…
1 ответ

Поток данных TPL: ограниченная емкость и ожидание завершения

Ниже для простоты скопирован реальный сценарий в виде сценария LINQPad: var total = 1 * 1000 * 1000; var cts = new CancellationTokenSource(); var threads = Environment.ProcessorCount; int capacity = 10; var edbOptions = new ExecutionDataflowBlockOpt…
28 май '14 в 18:04
1 ответ

Приложение запросов C# DB заставляет сервер БД перестать отвечать: Какие инструменты я могу использовать на сервере БД для определения и изучения точки дросселирования?

Я написал программу по образцу принятого ответа для асинхронных задач регулирования. Смотрите код ниже. Моя программа по сути является специальным инструментом "текстового поиска" БД. Он работает на клиентской машине Win 7. Программа составляет боль…
30 мар '18 в 00:17
1 ответ

BroadcastBlock недостающие элементы

У меня есть список номеров проектов, которые мне нужно обработать. Проект может содержать около 8000 элементов, и мне нужно получить данные для каждого элемента в проекте, а затем поместить эти данные в список серверов. Может кто-нибудь, пожалуйста,…
04 июн '17 в 04:29
1 ответ

Есть ли реализация BufferBlock от Filo?

Я засовываю сообщения в BufferBlock, который я затем хочу направить в один из двух BufferBlocks. Основной блок (P) будет получать все сообщения до тех пор, пока в буфере не будет определенное количество сообщений. Как только буфер P заполнен, я хочу…
20 фев '18 в 21:12
2 ответа

Как связанный блок потока данных отменяет целевой блок

В потоке данных TPL, когда блок связан с другим блоком с распространением, он будет пересылать исключения, а также отмены. Я могу себе представить, что пересылка исключения просто делается с помощью dataFlowBlock.Fault(exception), но мне любопытно, …
25 июл '18 в 06:04
3 ответа

Как охватить MaxDegreeOfParallelism между несколькими блоками TPL DataFlow?

Я хочу ограничить общее количество запросов, которые я отправляю на сервер базы данных по всем блокам DataFlow, до 30. В следующем сценарии регулирование 30 одновременных задач происходит в каждом блоке, поэтому при выполнении всегда выполняется 60 …
0 ответов

Многоадресный блок TPL Dataflow

Мне нужно многоадресно передать объект в несколько путей producer | multicast | | Process1 Process2 | | Writedb WriteFile широковещательный блок мало помогает, он выполняет только последние действия для обоих процессов1, процесс 2, если процесс 2 вы…
19 мар '16 в 13:44
1 ответ

Для чего этот конструктор: Конструктор ActionBlock<TInput> (Func<TInput, Task>)

Ранее я использовал ActionBlock через другой конструктор: ActionBlock&lt;TInput&gt; Constructor (Action&lt;TInput&gt;) Но для той, которая в заголовке, с возвращаемым типом Task, я не уверен, что ActionBlock делает с возвращенной Task. Я полагаю, чт…
1 ответ

Как сохранить ActionBlock работающим на любом исключении

У меня есть ActionBlock это просто обрабатывает сообщения, которые приходят из бесконечного цикла непрерывно. внутри ActionBlock Я делаю пост http. При возникновении любой ошибки, связанной с сетью, метод выдает исключение, и блок отказывается / ост…
1 ответ

Блок потока данных TPL использует всю доступную память

У меня есть TransformManyBlock со следующим дизайном: Ввод: путь к файлу Вывод: IEnumerable содержимого файла, по одной строке за раз Я запускаю этот блок для огромного файла (61 ГБ), который слишком велик для размещения в оперативной памяти. Чтобы …
1 ответ

Nested Async/Await не выглядит масштабируемым

У меня есть следующий (упрощенный) код: public async Task GetData(DomainObject domainObject, int depth) { // This async operation is really quick, and there's usually like five. IEnumerable&lt;TierOne&gt; tierOnes = await domainObject.GetTierOnesAsy…
04 июн '15 в 05:18
1 ответ

TPL DataFlow не может обработать исключение в ActionBlock

Я пытаюсь отправить копию одного сообщения от ActionBlock&lt;int&gt; для нескольких потребителей, которые также ActionBlock&lt;int&gt;, Это работает хорошо, однако, если один из целевых блоков выдает исключение, кажется, что это не распространяется …
06 сен '17 в 22:28
3 ответа

Как написать объект после TransformBlock?

У меня есть список объектов, которые мне нужно перебирать параллельно. Вот что мне нужно сделать: foreach (var r in results) { r.SomeList = await apiHelper.Get(r.Id); } Так как я хочу parellelize это, я попытался использовать Parallel.ForEach(), но …
1 ответ

Должен ли я использовать поток данных TPL для борьбы со сложностью, если нет параллелизма?

У меня есть проект, который имеет блоки рабочего процесса семантически. Решение не включает в себя какие-либо параллельные операции или операции с процессором, а также не требует масштабируемости. У меня просто есть вход, и он обрабатывается и перед…
20 июн '16 в 10:27
3 ответа

Почему блоки работают в таком порядке?

Это краткий пример кода, чтобы быстро представить вам, о чем мой вопрос: using System; using System.Linq; using System.Threading.Tasks; using System.Threading.Tasks.Dataflow; namespace DataflowTest { class Program { static void Main(string[] args) {…
2 ответа

Последовательность выполнения TransformBlock потока данных TPL выглядит не по порядку / асинхронно

Я следую этому пошаговому руководству по MSDN - Пошаговое руководство. Создание конвейера потока данных . Я создал сингл TransformBlock и выполнил это, выполнив Post к этому. // Process "The Adventurous Life of a Versatile Artist: Houdini" // by Har…
2 ответа

Параллельно. Для SendAsync в BufferBlock в Async Transform?

Я узнаю о TPL Dataflow Библиотека. Пока это именно то, что я искал. Я создал простой класс (ниже), который выполняет следующие функции После исполнения ImportPropertiesForBranch Я иду в сторонний API и получить список свойств Список xml возвращается…
2 ответа

Отложенная запись в DataFlow

При публикации элемента в TPL DataFlowЕсть ли какой-нибудь механизм, который может позволить задержку сообщения? public partial class BasicDataFlowService { private readonly ActionBlock&lt;string&gt; workerBlock; public BasicDataFlowService() { work…
16 мар '17 в 13:26
1 ответ

Альтернатива потоку данных BroadcastBlock с гарантированной доставкой

Мне нужно иметь какой-то объект, который действует как BroadcastBlock, но с гарантированной доставкой. Поэтому я использовал ответ на этот вопрос. Но я не очень четко понимаю поток выполнения здесь. У меня есть консольное приложение. Вот мой код: st…