Асинхронные бесконечные циклы

недавно начал изучать c#, есть приложение windows forms app, с событиями уже разобрался и при нажатии клавиш делаю нужные действия (запрос на сайт, обновить данные и тд.). Сейчас пробую реализовать асинхронные бесконечные циклы, с помощью Task, await и asyns. Создал следующее:

private async Task Go()
{
    while (true)
    {
        await ChangeStatus();
        await SendStatusToServer("1", "1");                
    }
}

Функции внутри выглядят примерно вот так:

private async Task ChangeStatus()
{
    btn.Text = Status() ? "Выключить" : "Включить";
    await Task.Delay(1000);            
}

private async Task SendStatusToServer(string id, string hash)
{
    string urlStat = "...";
    using (var webClient = new WebClient())
    {
        var pars = new NameValueCollection();
        pars.Add("id", id);
        pars.Add("hash", hash);
        webClient.UploadValues(urlStat, pars);
        await Task.Delay(60000);
    }
}

Вот тут и заключается вся проблема, все эти функции выполняются с разной задержкой, на самом деле их будет больше двух, и сейчас цикл не может завершиться, пока не закончится вторая функция, понимаю что двигаюсь куда-то не туда, поэтому прошу помочь.


Ответы (1 шт):

Автор решения: CrazyElf

Можно создать две отдельных асинхронных функции, каждую со своим бесконечным циклом. И потом ожидать сразу обе эти задачи с помощью метода Task.WhenAll, который ждёт завершения всех задач, переданных ему в качестве аргумента.

→ Ссылка