在 Aspnet Boilerplate 中使用后台服务时,文档中给出的示例可能会让人误解后台服务的生命周期。下面是一个更准确的示例:
在应用程序的启动文件(如 WebApiModule.cs或CoreApplicationModule.cs)中添加以下代码:
//初始化 BackgroundWorkerManager
IocManager.RegisterIfNot
//获取 BackgroundWorkerManager 实例,并向其注册需要在后台运行的服务
var backgroundWorkerManager = IocManager.Resolve
// MyBackgroundWorker.cs 示例代码如下: public class MyBackgroundWorker : PeriodicBackgroundWorkerBase { public MyBackgroundWorker(Abp.Logging.ILogger logger, AbpTimingSetting timingSetting) : base(logger, timingSetting) { }
protected override void DoWork()
{
// 在此实现需要后台运行的代码
}
}
在此示例中,我们在应用程序的启动文件中创建了一个 BackgroundWorkerManager 实例并注册了一个需要在后台运行的 MyBackgroundWorker 服务。 MyBackgroundWorker 是一个继承自PeriodicBackgroundWorkerBase的重复运行的后台服务。通过 PeriodicBackgroundWorkerBase,您可以定期调用 DoWork 方法中实现的代码。
请注意,BackgroundWorkerManager 是在IoC容器中注册的,因此我们需要在Ioc管理器中注册IocManager.RegisterIFNot的依赖关系。