У меня есть набор хорошо структурированных объектов, настроенных по следующим направлениям:
abstract class Data
{
public abstract void GetData();
public abstract void Process();
}
abstract class DataSource1 : Data
{
public void GetData() { ... }
}
class DataSource1ProcessorA : DataSource1
{
public void Process() { ... }
}
abstract class DataSource2 : Data
{
public void GetData() { ... }
}
class DataSource2ProcessorA : DataSource2
{
public void Process() { ... }
}
class DataSource2ProcessorB : DataSource2
{
public void Process() { ... }
}
В настоящее время я последовательно обрабатываю каждый DataSourceProcessor, который начинает увеличиваться по мере добавления новых источников и процессоров.Каждый источник совершенно не связан, но каждый процессор должен работать по порядку.Поэтому мне нужен способ превратить
new List<List<Data>> tasks = new List<List<Data>>()
{
new List<Data>() { new DataSource1ProcessorA() },
new List<Data>() { new DataSource2ProcessorA(), new DataSource2ProcessorB() }
}
foreach (List<Data> source in tasks)
{
foreach(Data data in source)
{
data.GetData();
data.Process();
}
}
в серию задач.Я работал с Задачами раньше, хотя я не сделал ничего действительно сложного с ними, и я просто не могу понять, как выполнить произвольное количество задач с произвольной последовательностью последовательных вызовов.
Мне не нужно никоим образом получать доступ к Задачам, кроме как запускать их и сообщать о любых ошибках, которые они выдают.Предпочтительно ошибка в DataSource2ProcessorA не должна препятствовать выполнению DataSource2ProcessorB, но если при кодировании значительно проще разрешить одной ошибке уничтожить весь поток DataSource, я могу с этим смириться.