如何使用 .NETCoreApp1.1 实现定时器

How implement a timer with .NETCoreApp1.1

在 ASP.NET Core 之前,我曾经这样实现计时器:

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();
         }
     }
}

我对 .NETCoreApp1.1 控制台应用程序有同样的需求,System.Timers 不再存在 ASP.NET Core。我也尝试使用 System.Threading.Timer 但该项目不再构建。

如何使用 .NETCoreApp1.1 实现计时器?是否有 System.Timers 的等价物?

好的,所以要使用 .NETCoreApp1.0.NETCoreApp1.1 实现计时器,您必须使用 System.Threading.Timer。它几乎像 System.Timers 一样工作,您在这里拥有所有文档:https://msdn.microsoft.com/en-us/library/system.threading.timer(v=vs.110).aspx

如果您的项目在添加 System.Threading.Timer 包后不再构建,那是因为您必须向 [=27= 的平台版本添加依赖项] 到您的 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"
    }
  }
}