【发布时间】:2019-11-03 00:15:23
【问题描述】:
我正在编写一个 .net 核心 web-api 后端并希望运行一个代码,该代码每 4 小时收集一次统计信息并将其写入我的数据库。
为了做到这一点,我需要将我的数据库上下文注入某个方法并使用计时器每 4 小时运行一次,问题是我无法将数据库注入此静态方法。
我尝试过使用 ActivatorUtilities.CreateInstance 但我还是无法获得 IServiceProvider,因为我还需要注入它。
这大致就是我试图定期运行的内容
public class StatisticsProvider : IStatisticsProvider
{
private readonly AppCtx _appCtx;
public StatisticsProvider(AppCtx appCtx)
{
_appCtx = appCtx;
}
public void LogStatistics()
{
//get data from database and generate statistics
//Write statistics to DB
}
}
谢谢!
【问题讨论】:
-
这不是一个好主意。您应该为此使用 HangFire 之类的东西。
-
在 ASP.NET Core 中,这可以通过托管服务来实现。有关详细信息,请参阅the official documentation。
-
@Nkosi 一些带有计时器的静态方法,该方法将每小时运行一次此服务
标签: c# dependency-injection .net-core