Я работаю над проектом с требованиями к быстродействию, поэтому для повышения эффективности нам нужно выполнить массовую (пакетную?) Несколько операций (например, сохранение данных в базе данных).
Однако я хочу, чтобы наш код поддерживал простой для понимания поток, например:
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 или конфигурацию для соединения потоков друг с другом, не подходят для моей цели. Кроме того, цепочка - это не то, что я ищу - я не хочу сначала построить цепочку, а затем запустить ее, мне нужен код, который выглядит так, как будто это простой поток («Сделайте A, сделайте B, если C, то сделайте D»).