我想出了如何使用计时器重复普通方法,并且它工作正常。但是现在我必须在这个方法中使用一些异步方法,所以我不得不把它变成一个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错误。我如何使用这个相同的计时器但是使用异步任务?
答案 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)
{
}