host service
public class DemoService01
{
public int Add(int a, int b)
{
return a + b;
}
}
// 由于Host service是单例的,所以无法使用IOC注入非单例服务
// 需要使用IServiceScopeFactory来生成scope,然后调用服务
public class HostService01 : BackgroundService
{
private IServiceScope Scope { get; init; }
public HostService01(IServiceScopeFactory factory)
{
Scope = factory.CreateScope();
}
// ???? 没看到这个Dispose()被调用
public override void Dispose()
{
Console.WriteLine("dispose scope");
Scope.Dispose();
base.Dispose();
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
Console.WriteLine("HostService01 started.");
await Task.Delay(5000);
Console.WriteLine("hello world!!!");
// 通过Scope获取service
DemoService01 service = Scope.ServiceProvider.GetRequiredService<DemoService01>();
Console.WriteLine(service.Add(1, 2));
await Task.Delay(5000);
Console.WriteLine("HostService01 stopped.");
}
}
注册service
builder.Services.AddTransient<DemoService01>();
builder.Services.AddHostedService<HostService01>();
注意: 如果Host service中抛出异常,那么整个应用就会终止
---------------------------
知道的更多,不知道的也更多
---------------------------
标签:
asp.net core
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具