如何在计时器内调用异步任务?

时间:2017-03-09 02:33:09

标签: c# asynchronous timer

我想出了如何使用计时器重复普通方法,并且它工作正常。但是现在我必须在这个方法中使用一些异步方法,所以我不得不把它变成一个Task而不是一个普通的方法。这是我现在的代码:

public async Task Test()
{
    Timer t = new Timer(5000);
    t.AutoReset = true;
    t.Elapsed += new ElapsedEventHandler(OnTimedEvent);
    t.Start();
}

private async Task OnTimedEvent(Object source, ElapsedEventArgs e)
{

}

我目前在t.Elapsed +=行上收到错误,因为没有等待,但是如果我添加它,它就好像它是一个普通的函数,并给我一个丢失的params错误。我如何使用这个相同的计时器但是使用异步任务?

1 个答案:

答案 0 :(得分:5)

对于事件处理程序,您可以继续使用async void return类型。您的代码应如下所示:

public void Test()
{
    Timer t = new Timer(5000);
    t.AutoReset = true;
    t.Elapsed += new ElapsedEventHandler(OnTimedEvent);
    t.Start();
}

private async void OnTimedEvent(Object source, ElapsedEventArgs e)
{

}