У меня есть список имен заданий в таблице базы данных, который можно запустить, вызвав API с именем задания в качестве параметра. Каждая из этих работ занимает от 10 до 30 минут. Существует другой API, который можно вызывать через некоторый интервал (10 минут), чтобы проверить состояние завершения задания. Задание может быть запущено только после завершения предыдущего задания в списке / тайм-аута. То, что делают эти задания, здесь не имеет значения.
Я очень большой поклонник фреймворка Rx, но мало что о нем знаю.
В настоящее время я выбираю все имена заданий из db, затем перебираю их в каждый цикл я вызываю API триггера задания, чтобы запустить задание, а затем продолжаю вызывать API состояния задания с определенным интервалом, пока задание не будет завершено или не истекло время ожидания до начала следующего цикла задания.
foreach(string jobName in lstJobs)
{
if(StartTheJob(jobName)) //if job successfully started
{
do{
Task.Delay(10000);
}
While(GetJobCompletionStatus(jobName));
// how to timeout this do/while loop
}
}
Проблема в том, что если работа продолжается в течение нескольких часов, я не нахожу способ тайм-аута do while l oop и запуска следующей работы. Есть ли лучший способ сделать это с помощью Rx?