增加说明文档
This commit is contained in:
parent
222342969c
commit
4f19f502eb
53
Falcon.SugarApi/TimedBackgroundTask/Readme.md
Normal file
53
Falcon.SugarApi/TimedBackgroundTask/Readme.md
Normal file
|
@ -0,0 +1,53 @@
|
|||
## 后台任务模块 TimedTask
|
||||
|
||||
### 设计目标
|
||||
|
||||
1. 后台独立运行的任务模块。插件通过继承TimedTask类实现业务类,并通过IServiceCollection.AddTimedTask进行注册。
|
||||
1. 业务类需要重写Run方法实现业务逻辑。
|
||||
1. 业务类通过重写CronSchedule属性实现任务调度,该属性提供cron表达式。
|
||||
1. 业务类注册后首先调用一次业务实现,然后按照cron表达式定义的时间调度执行业务逻辑。
|
||||
1. 本次业务逻辑结束后才会调度下一次,不会存在重复执行的情况。
|
||||
|
||||
### 业务实现
|
||||
~~~c#
|
||||
//通过继承TaskBase实现后台任务
|
||||
public class RunTestUseLogTask:TaskBase
|
||||
{
|
||||
public RunTestUseLogTask(IServiceProvider service) : base(service) {
|
||||
}
|
||||
//cron表达式。在每分钟的10秒时运行
|
||||
public override string CronSchedule => "10";
|
||||
|
||||
//测试用业务逻辑 任务开始2秒后和5秒后记录日志。
|
||||
public override async Task<bool> Run(CancellationToken cancellationToken) {
|
||||
await Task.Run(() => {
|
||||
Thread.Sleep(2 * 1000);
|
||||
});
|
||||
this.Logger.LogInformation($"RunTestUseLogTask run 1 at {DateTime.Now:yyyy-MM-dd HH:mm:ss}");
|
||||
await Task.Run(() => {
|
||||
Thread.Sleep(3 * 1000);
|
||||
});
|
||||
this.Logger.LogInformation($"RunTestUseLogTask run 2 at {DateTime.Now:yyyy-MM-dd HH:mm:ss}");
|
||||
return await Task.FromResult(true);
|
||||
}
|
||||
}
|
||||
~~~
|
||||
### 后台任务注册
|
||||
~~~c#
|
||||
public class ServicePlugin:IServicePlugin
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
public IServiceCollection AddServices(IServiceCollection services,IConfiguration configuration) {
|
||||
//其他模块注册
|
||||
|
||||
//注册任务
|
||||
services.AddTimedTask<RunTestUseLogTask>();
|
||||
|
||||
//其他模块注册
|
||||
|
||||
//返回服务集合
|
||||
return services;
|
||||
}
|
||||
|
||||
}
|
||||
~~~
|
Loading…
Reference in New Issue
Block a user