-1
我正在更新我的代碼以使用Async,問題在於Timer.Elapsed需要void返回類型,但這基本上不允許等待,因此代碼不會等待在完成所有事情之前,過早完成。Async with a Timer
代碼:
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 2014-09-28 16:19:21
BTW,timer.Enabled = true;和timer.Start();做同樣的事。 – 2014-09-28 16:27:48
目前還不清楚你的意思是「太快結束」。你的代碼看起來很好。 – 2014-09-28 16:44:21