Я работаю над проектом с необходимыми требованиями к производительности, поэтому нам необходимо выполнить массовую (пакетную обработку) несколько операций (например, сохранение данных в базе данных) для эффективности.
Однако я хочу, чтобы наш код поддерживал простой для понимания поток, например:
input = Read();
parsed = Parse(input);
if (parsed.Count > 10)
{
status = Persist(parsed);
ReportSuccess(status);
return;
}
ReportFailure();
Функция, которую я здесь ищу, заключается в том, что функция Persist () автоматически выполняется массовым образом (и, следовательно, асинхронно), но ведет себя как пользователь синхронно (пользователь должен блокировать, пока массовое действие не завершится). Я хочу, чтобы разработчик мог реализовать Persist (ICollection).
Я изучал потоковое программирование, с которым я не очень хорошо знаком. Я видел одну библиотеку для fbp в C # здесь и немного поиграл с Microsoft Workflow Foundation, но у меня сложилось впечатление, что обе излишни в том, что мне нужно. Что бы вы использовали для реализации объемного поведения потока?
Обратите внимание, что я хотел бы получить код, который в точности совпадает с тем, что я написал (простой для понимания и отладки), поэтому решения, которые включают в себя yield или конфигурацию для соединения потоков друг с другом, не подходят для моей цели. Также цепочка
это не то, что я ищу - я не хочу сначала создавать цепочку, а затем запускать ее, я хочу код, который выглядит так, как будто это простой поток («Do A, Do B, если C, то D» ).