Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

c# backgroundservice

作者:冷言寡语   发布日期:2025-07-17   浏览:37

using System;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;

public class MyBackgroundService : BackgroundService
{
    private readonly ILogger<MyBackgroundService> _logger;

    public MyBackgroundService(ILogger<MyBackgroundService> logger)
    {
        _logger = logger;
    }

    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        _logger.LogInformation("MyBackgroundService is starting.");

        while (!stoppingToken.IsCancellationRequested)
        {
            _logger.LogInformation("MyBackgroundService is running at: {time}", DateTimeOffset.Now);

            // 模拟一些工作,例如每5秒执行一次任务
            await Task.Delay(TimeSpan.FromSeconds(5), stoppingToken);
        }

        _logger.LogInformation("MyBackgroundService is stopping.");
    }

    public override async Task StopAsync(CancellationToken stoppingToken)
    {
        _logger.LogInformation("MyBackgroundService is stopping.");

        // 执行清理工作
        await base.StopAsync(stoppingToken);
    }
}

解释说明

  1. 继承 BackgroundService:

    • MyBackgroundService 类继承自 BackgroundService,这是一个抽象类,提供了实现后台服务的基础结构。
  2. 依赖注入:

    • 通过构造函数注入 ILogger<MyBackgroundService>,用于记录日志信息。
  3. ExecuteAsync 方法:

    • 这是后台服务的核心方法,它会在服务启动后持续运行,直到收到停止信号。
    • 使用 while 循环和 stoppingToken 来确保服务可以在接收到停止请求时优雅地退出。
    • 在循环中,模拟了一些工作(例如每5秒打印一次当前时间),实际应用中可以替换为具体的任务逻辑。
  4. StopAsync 方法:

    • 当服务需要停止时,会调用此方法。可以在这里进行一些清理工作,确保资源正确释放。
  5. 日志记录:

    • 使用 _logger 记录服务的启动、运行和停止信息,便于调试和监控。

这个示例展示了如何创建一个简单的后台服务,并且可以通过依赖注入的方式集成日志记录功能。

上一篇:c# begininvoke

下一篇:c# 序列化

大家都在看

c# 二进制

c# tcp client

c# type.gettype

c# sqlconnection

c# string.format 小数位数

.net和c#

c#游戏开发

c#网络编程

c# rectangle

c# 取字符串最后一个字符

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站