2019-8-31-ASP.NET-Core-开启后台任务
2024-08-27 21:07:12
title | author | date | CreateTime | categories |
---|---|---|---|---|
ASP.NET Core 开启后台任务
|
lindexi
|
2019-08-31 16:55:58 +0800
|
2019-3-9 15:18:2 +0800
|
asp aspdotnetcore dotnetcore
|
本文告诉大家如何通过 Microsoft.Extensions.Hosting.BackgroundService 开启后台任务
实现 BackManagerService 类继承 BackgroundService 抽象类,请看代码
public class BackManagerService : BackgroundService
{
/// <inheritdoc />
protected override Task ExecuteAsync(CancellationToken stoppingToken)
{
return Task.CompletedTask;
}
}
然后打开 Startup.cs 在 ConfigureServices 方法注入
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IHostedService, BackManagerService>(); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
现在运行 ASP.NET Core 程序就可以看到调用进 ExecuteAsync 方法了
那么如何实现轮询?大概在30秒左右做某个任务?在没有用任何设计的情况,假如这个任务就放在了 BackManagerService 的 Foo 方法,可以通过下面代码调用
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
Foo();
await Task.Delay(TimeSpan.FromSeconds(30), stoppingToken);
}
}
通过 Task.Delay 的方法延迟指定的时间就可以了,那么更复杂的封装就在大佬们的封装变得更加好用,更多封装请看 Ron 大佬博客
所有代码放在 github
最新文章
- 使用ArcGIS JavaScript API 3.18 加载天地图
- linux操作系统flash player问题--ubuntu
- Android 插件化 动态升级
- webbrowser代理c#代码实现
- leetcode 组合题
- 关于Win8对getElementsByTagName等dom方法兼容性的替代方法
- android 25 跨进程启动activity
- GDB 的MI接口
- 从苹果的appstore谈谈web前端那丝毫的追求
- EXCEL Pivot table manipulate
- 一键批量ping任意ip段的存活主机
- Spring Mvc 用Demo去学习
- JSP运行过程 JSP脚本 静态动态包含 jsp指令 jsp内置对象jsp四大作用域 jsp动作元素 EL表达式 JSTL 设计模式 JSP开发模式 EL内置对象
- in_flight_pqueue.go
- java 静态资源访问详解
- Spring常用注解总结(3)
- docker进程分析
- BugkuCTF SQL注入1
- 团队作业 week 14
- What Is Apache Hadoop