Мне нужно запустить в консольном приложение 3 асинхронных 3 метода. Каждый метод создает бесконечный цикл в котором обрабатывает данные из источника по API и сохраняет асинхронно в базу. Метод должен работать пока я не выключу программу. Проблема в том что запускается только первый метод, до остальных двух не доходит. В качестве проверки вывожу надпись в консоле в каждом методе. Работает только первый. Все 3 метода одинаковы на 99% разница лишь в источнике и записи в свою таблицу. Вот код в кратце без внутренних действий. Лишь цепочка вызовов.
static void Main(string[] args)
{
FirstRobot first = new FirstRobot();
SecondRobot second = new SecondRobot();
ThirdRobot third = new ThirdRobot();
first.StartFirst();
second.StartSecond();
third.StartThird();
}
Тут есть цепочка асинхронных методов. Во все 3х методах она одинакова. Первый метод сначала создает переменные и делает свои действия, потом внутри своего тела вызывает еще один асинхронный метод
public async Task StartFirst()
{
await GetRobotResult(); // Тут стартует бесконечный цикл, и сюда прога возвращается после сохранения в базу.
}
async Task GetRobotResult()
{
await robot.MyRobotTS()
}
public async Task MyRobotTS
{
await addbaza.AddBazaMethod()
}
public async Task AddBazaMethod
{
await db.SaveChangesAsync(); // Самый конец. Сохранение в базу.
}
Как заставить что работали сразу все 3 вечных метода?
Как пример, вы можете попробовать стартовать вашу, по всей видимости, синхронную работу (кода то вы так и не показали) следующим образом:
var tasks = new[]
{
Task.Factory.StartNew(() => first.StartFirst(), TaskCreationOptions.LongRunning),
Task.Factory.StartNew(() => first.StartFirst(), TaskCreationOptions.LongRunning),
Task.Factory.StartNew(() => first.StartFirst(), TaskCreationOptions.LongRunning)
};
Task.WaitAll(tasks);
Тут мы стартуем 3 одинаковые работы, даем понять шедулеру, что работы долгоиграющие (он скорее всего выделит тред для каждой из работ), и после синхронно ждем когда всё это кончится.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости