У меня есть файлы, которые нужно загрузить где-то для обработки. Пути файлов находятся в таблице базы данных.Как обрабатывать очередь задач параллельно в C#
В последовательном программировании я получаю связку из 20 (может быть n) файлов и загружаю эти файлы для обработки и удаления этих файлов, а затем обрабатывает следующий слот из 20 файлов.
Но мне нужно загрузить эти файлы параллельно, как выполнение задачи параллельно с TPL в C# (Parallel.For и т. Д.). Это легко можно сделать в TPL, но я должен ждать всех задач.
Например, в моей очереди задач у меня есть 20 файлов и 19 файлов в этой очереди имеют размер 1 МБ, но 1 файл имеет размер 500 МБ.
Так что, когда я использую Parallel.For В этой очереди несколько потоков начинают загружать эти файлы. В этом случае 19 файлов с меньшим размером будут загружаться быстрее, но 1 файл с большим размером займет время.
Так что мне нужно при обработке большего файла, я могу ввести 19 других файлов в очередь и начать их обработку параллельно с этим большим файлом.
Вы действительно должны проверить [TPL DataFlow] (https://msdn.microsoft.com/en-us/library/hh228603%28v=vs.110%29.aspx), так как он соответствует вашим требованиям очень хорошо. – spender
Вы уверены, что вам нужно загрузить их в ** parallel **, а не ** async **? –