Я обновляю свой код для использования Async, проблема в том, что для Timer.Elapsed требуется тип возврата void, но это в основном не позволяет ждать, поэтому код не ждет и заканчивается слишком рано, прежде чем все будет сделано.Async с таймером
Код:
public static void Main(string[] args)
{
Timer timer;
timer = new System.Timers.Timer();
timer.Interval = 3000;
timer.Elapsed += OnTimerAsync;
timer.Enabled = true;
timer.Start();
Console.WriteLine("Press the Enter key to exit the program... ");
Console.ReadLine();
Console.WriteLine("Terminating the application...");
}
public async static void OnTimerAsync(object sender, ElapsedEventArgs args)
{
await ExecuteWorkflowAsync();
}
private async static Task<bool> ExecuteWorkflowAsync()
{
List<Schedule> schedulesToRun;
try
{
await JobLoader.LoadAsync(schedulesToRun);
}
catch (Exception ex)
{
// Log ex
}
return true;
}
Есть ли способ использовать объект Timer с асинхронным?
Что именно заканчивает слишком рано? – SLaks
BTW, timer.Enabled = true; и timer.Start(); делайте то же самое. –
Непонятно, что вы подразумеваете под «завершением слишком рано». Ваш код выглядит отлично. –