2017-01-16 69 views
3

定時器ASP.NET核心之前,我用來實現這樣的計時器:如何實現與.NETCoreApp1.1

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控制檯應用程序和系統同樣需要。使用ASP.NET Core的定時器不再存在。我也嘗試使用System.Threading.Timer,但該項目不再構建。

我該如何使用.NETCoreApp1.1實現Timer?有沒有相當於System.Timers?

+0

System.Threading.Timer不支持.NET的核心> = 1.1.0請參閱相關性[第(https://www.nuget.org/ packages/System.Threading.Timer /) – Sanket

+0

@Sanket它是兼容的,但我必須添加一個依賴到Microsoft.NETCore.App框架部分 – AdrienTorris

回答

5

好了,所以要實現定時器與.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包後不再建,那是因爲你必須依賴添加到平臺版本Microsoft.NETCore.App到您的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" 
    } 
    } 
}