Descubrí cómo usar un método normal de repetición con un temporizador, y funcionó bien. Pero ahora tengo que usar algunos métodos asíncronos dentro de este método, así que tuve que convertirlo en una Tarea en lugar de un método normal. Este es el código que tengo ahora:
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) { }
Actualmente recibo un error en la línea t.Elapsed +=
porque no hay espera, pero si lo agrego, simplemente actúa como si fuera una función normal y me da un error de parámetros faltantes. ¿Cómo usaría este mismo temporizador pero con una tarea asíncrona?
Para los controladores de eventos, puede continuar y usar el tipo de retorno async void
. Su código debería verse así:
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) { }