Antes de ASP.NET Core, solía implementar temporizadores como ese:

public class Class1
{
    Timer tm = null;

    public Class1()
    {
        this.tm.Elapsed += new ElapsedEventHandler(Timer_Elapsed);
        this.tm.AutoReset = true;
        this.tm = new Timer(60000);
    }

    protected void Timer_Elapsed(object sender, ElapsedEventArgs e)
    {
         this.tm.Stop();

         try
         {
             // My business logic here
         }
         catch (Exception)
         {
             throw;
         }
         finally
         {
             this.tm.Start();
         }
     }
}

Tengo la misma necesidad en una aplicación de consola .NETCoreApp1.1 y System.Timers ya no existe con ASP.NET Core. También trato de usar System.Threading.Timer pero el proyecto ya no se construye.

¿Cómo puedo implementar un temporizador con .NETCoreApp1.1? ¿Existe un equivalente de System.Timers?

5
AdrienTorris 16 ene. 2017 a las 13:45

1 respuesta

La mejor respuesta

Bien, entonces para implementar un temporizador con .NETCoreApp1.0 o .NETCoreApp1.1 , debes usar System.Threading.Timer . Funciona casi como System.Timers, tienes toda la documentación aquí: https://msdn.microsoft.com/en-us/library/system.threading.timer (v = frente a 110) .aspx

Si su proyecto ya no se compila después de agregar el paquete System.Threading.Timer , es porque debe agregar una dependencia a la versión de plataforma de Microsoft.NETCore.App a su marco de netcoreapp:

{
  "version": "1.0.0-*",
  "buildOptions": {
    "emitEntryPoint": true
  },

  "dependencies": {
    "System.Threading.Timer": "4.3.0"
  },

  "frameworks": {
    "netcoreapp1.1": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.1.0"
        }
      },
      "imports": "dnxcore50"
    }
  }
}
6
AdrienTorris 16 ene. 2017 a las 18:43