2019-8-31-ASP.NET-Core-开启后台任务
2023-09-27 14:28:53 时间
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
相关文章
- Asp.Net Core_我的第一个开源项目
- Asp.Net_Mvc_ActionResult返回值
- ASP.NET MVC下使用AngularJs语言(二):ng-click事件
- ASP.NET MVC Bundling and RequireJS
- 16、ASP.NET MVC入门到精通——MVC过滤器
- ASP.NET Core – Static Files
- ASP.NET Core – Razor Pages 冷知识
- Asp.net core 学习笔记 ( Web Api )
- Asp.net core 学习笔记 ( HttpClient )
- ASP.NET中App_Code,App_Data等文件夹的作用
- [译]面向初学者的Asp.Net状态管理技术
- ASP.NET Core Authentication and Authorization
- ASP.NET Core(C#) 字符串常用处理转换的扩展方法工具类
- asp.net core 2.0 中间件(Middleware)异常处理并且返回异常信息给调用者
- ASP.NET Core应用的错误处理[1]:三种呈现错误页面的方式
- 学习ASP.NET Core, 怎能不了解请求处理管道[3]: 自定义一个服务器感受一下管道是如何监听、接收和响应请求的
- 聊聊ASP.NET Core默认提供的这个跨平台的服务器——KestrelServer
- ASP.NET Core的配置(5):配置的同步[设计篇]
- ASP.NET Core的配置(4):多样性的配置来源[下篇]
- ASP.NET MVC Controller激活系统详解:默认实现
- 集成EntLib实现ASP.NET MVC的异常处理[续篇]
- Orchard Core一分钟搭建ASP.NET Core CMS
- ASP.NET Core 中间件Diagnostics使用