На данный вопрос уже ответили:
Пишу планировщик для разных задач работы с БД, это загрузка, выгрузка, обработка данных. все действия реализуются в виде отдельных классов и наследуются от абстрактного класса и должны реализовывать обязательный метод Run()
Сами задачи хранятся в таблице БД. в одном из полей указывается имя класса метод Run() которого нужно выполнить по расписанию. соответственно при запуске нужно определить экземпляр какого класса создавать
private void TimerTask(object Obj)
{
IsRuning = true;
SetNextStartTask();
switch (Metod)
{
case "ExportXML0":
{
Task task = Task.Factory.StartNew(() =>
{
ExportData export = new ExportXML0(Id);
export.Run();
});
if (task.IsCompleted) { task.Dispose(); }
break;
}
case "ExportUniversalToTXT":
{
Task task = Task.Factory.StartNew(() =>
{
ExportData export = new ExportUniversalToTXT(Id);
export.Run();
});
if (task.IsCompleted) { task.Dispose(); }
break;
}
}
IsRuning = false;
}
Сейчас классов относительно не много, около 30. Когда их будет 100+ то этот метод будет выглядеть страшно. Как можно упростить этот выбор?
В некоторых языках, к примеру SQL или Caché Basic можно написать какой-то текст и его выполнить, как красиво это сделать в C#
Используйте рефлексию
Task task = Task.Factory.StartNew(() =>
{
ExportData export = (ExportData)Activator.CreateInstance(
assemblyName, Metod, new object[] {Id}
);
export.Run();
});
if (task.IsCompleted) { task.Dispose(); }
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости