BackgroundTask Class

后台任务抽象基类。

Definition

Namespace: QuickAdmin.Service.Background
Assembly: QuickAdmin.Net (in QuickAdmin.Net.dll) Version: 2.0.11
C#
[NotUseDI]
public abstract class BackgroundTask : BackgroundService, 
	IBackgroundTask
Inheritance
object    BackgroundService    BackgroundTask
Derived
Implements
IBackgroundTask

Remarks

通过从此类继承来实现具体的后台任务服务,派生类最少只需实现 DoWorkAsync(CancellationToken) 去执行具体的逻辑。
派生类要以单例模式注入到系统服务中。

Example

C#
// 实现一个后台任务服务:
[UseDI(typeof(MyBackgroundService))]
public class MyBackgroundService : BackgroundTask
{
    // DoWorkAsync() 将被无限次循环执行
    protected override async Task<IServiceResult> DoWorkAsync(CancellationToken stoppingToken)
    {
        Console.WriteLine("MyBackgroundService.DoWorkAsync()");
        await Task.Delay(TimeSpan.FromSeconds(1));
        return ServiceResult.Ok();
    }
}

// 实现一个定时后台任务服务:
[UseDI(typeof(MyScheduledService))]
public class MyScheduledService : BackgroundTask
{
    // 周期为 5 秒
    public override int TimerTaskPeriodInMilliseconds => 5 * 1000;

    // 5 秒执行一次 DoWorkAsync()
    protected override async Task<IServiceResult> DoWorkAsync(CancellationToken stoppingToken)
    {
        WorkMessage = $"我的定时任务第 {WorkExecutingRound} 次执行";
        Console.WriteLine(WorkMessage);
        await Task.Delay(TimeSpan.FromSeconds(1));
        return ServiceResult.Ok();
    }
}

// 然后在启动代码里加入:
// 注册服务:
builder.Services.AddSingleton(typeof(MyBackgroundService));
builder.Services.AddSingleton(typeof(MyScheduledService));
// 让后台任务服务随应用一起启动起来:
// 以下只添加了 MyBackgroundService,因此 MyBackgroundService 会随应用立即启动起来,而 MyScheduledService 则为停止状态,
// 可去内置的后台任务管理页面,或自行在某处通过代码手工启动 MyScheduledService
builder.Services.AddHostedService<MyBackgroundService>(provider => provider.GetService<MyBackgroundService>());

Constructors

BackgroundTask 构造新实例。

Properties

Public Properties

Description 任务说明。
LastFailedMessage 最后的错误消息。
LastWorkBeginTime 工作方法最后一次执行开始时间。
LastWorkElapsedTime 工作方法最后一次执行耗时。
Name 任务名称。
Status 任务状态。
TaskException 任务异常。
TaskStartTime 任务启动时间。
TaskStopTime 任务停止时间。
TimerTaskPeriodInMilliseconds 定时任务的运行周期(单位:毫秒)。
WorkExecutingRound 工作方法正在执行的轮次。
WorkFailedTimes 工作方法执行失败次数。
WorkMessage 工作消息反馈。
WorkTotalExecutedTimes 工作方法总计执行的次数。
WorkTotalFailedTimes 工作方法总计执行失败的次数。

Protected Properties

BreakTaskWhenWorkFailed 指示工作方法执行失败时是否立即结束任务。
DelayMillisecondsForFirstExecution 指示在工作方法在首次执行前等待的时长(单位:毫秒)。
IsAppStopping 指示应用程序是否正在停止。
logger 系统日志。

Methods

Public Methods

DisposePerforms application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
(Overrides BackgroundServiceDispose)

Protected Methods

BeforePauseTaskAsync 暂停任务前执行的方法。
BeforeResumeTaskAsync 继续任务前执行的方法。
DoWorkAsync 工作方法。
ExecuteAsync 任务执行主方法。
(Overrides BackgroundServiceExecuteAsync(CancellationToken))
OnTaskExceptionAsync 用来处理任务执行过程中发生的未处理的异常。
OnTaskStartedAsync 任务成功启动后,DoWorkAsync(CancellationToken) 前执行的方法。
OnTaskStartingAsync 任务启动前执行的方法。
OnTaskStoppedAsync 任务停止后执行的方法。
OnTaskStoppingAsync 任务停止时执行的方法。

Explicit Interface Implementations

IBackgroundTaskPauseAsync 暂停任务。
IBackgroundTaskResumeAsync 继续任务。
IBackgroundTaskStartAsync 启动任务。
IBackgroundTaskStopAsync 停止任务。

See Also