午夜视频在线观看区二区-午夜视频在线观看视频-午夜视频在线观看视频在线观看-午夜视频在线观看完整高清在线-午夜视频在线观看网站-午夜视频在线观看亚洲天堂

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C# 封裝 BackgroundService 在 ASP.NET Core 應用程序中執行后臺任務

admin
2025年2月20日 19:58 本文熱度 386

在.NET Core和.NET 5+中,BackgroundService 是一個非常有用的抽象基類,用于在 ASP.NET Core 應用程序中執行后臺任務。它簡化了后臺任務的管理,使得開發者可以更方便地創建和運行長時間的運行的后臺服務。本文將詳細介紹如何封裝 BackgroundService,并在實際項目中應用它。

一、BackgroundService 簡介 

BackgroundService 是一個抽象基類,提供了后臺任務的基類實現。它繼承自 IHostedService 接口,并處理了任務的啟動和停止邏輯。通過繼承 BackgroundService,開發者可以專注于實現具體的后臺任務邏輯,而不需要關心服務的啟動和停止管理。

二、封裝 BackgroundService 的步驟 

1. 創建 BackgroundService 子類

首先,我們需要創建一個繼承自 BackgroundService 的子類,并實現 ExecuteAsync 和 Dispose 方法。

示例代碼如下:

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

publicclassMyBackgroundService : BackgroundService
{
    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        while (!stoppingToken.IsCancellationRequested)
        {
            // 執行后臺任務邏輯
            await Task.Delay(1000, stoppingToken); // 模擬任務執行時間
            Console.WriteLine("Background task is running...");
        }
    }

    public override void Dispose()
    {
        // 釋放資源
        Console.WriteLine("Background service is disposing...");
        base.Dispose();
    }
}

在上面的示例中,ExecuteAsync 方法包含后臺任務的主要邏輯,Dispose 方法用于釋放資源。

2. 注冊 BackgroundService

接下來,我們需要在 Startup.cs 文件中注冊 BackgroundService,以便 ASP.NET Core 主機能夠識別并啟動它。

示例代碼如下:

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

var builder = WebApplication.CreateBuilder(args);

// 添加服務到容器
builder.Services.AddHostedService<MyBackgroundService>();

var app = builder.Build();

// 配置 HTTP 請求管道
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.MapGet("/", () => "Hello World!");

app.Run();

在上面的代碼中,通過調用 AddHostedService<MyBackgroundService>() 方法,我們將 MyBackgroundService 注冊為托管服務。

三、高級封裝 

在實際項目中,我們可能需要封裝更多的功能,例如任務調度、日志記錄、錯誤處理等。以下是一個更高級的封裝示例:

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

publicclassAdvancedBackgroundService : BackgroundService
{
    privatereadonly ILogger<AdvancedBackgroundService> _logger;

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

    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        _logger.LogInformation("Advanced background service started.");

        try
        {
            while (!stoppingToken.IsCancellationRequested)
            {
                // 執行后臺任務邏輯
                await Task.Delay(1000, stoppingToken); // 模擬任務執行時間
                _logger.LogInformation("Advanced background task is running...");
            }
        }
        catch (Exception ex)
        {
            _logger.LogError(ex, "An error occurred while running the background task.");
        }
        finally
        {
            _logger.LogInformation("Advanced background service stopped.");
        }
    }

    public override void Dispose()
    {
        _logger.LogInformation("Disposing advanced background service.");
        base.Dispose();
    }
}

在這個示例中,我們通過依賴注入(DI)引入了日志記錄功能,并在 ExecuteAsync 方法中添加了錯誤處理邏輯。

3. 注冊 AdvancedBackgroundService

在 Startup.cs 文件中注冊 AdvancedBackgroundService

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

var builder = WebApplication.CreateBuilder(args);

// 添加服務到容器
builder.Services.AddHostedService<AdvancedBackgroundService>();

var app = builder.Build();

// 配置 HTTP 請求管道
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.MapGet("/", () => "Hello World!");

app.Run();

四、總結 

通過封裝 BackgroundService,我們可以輕松地在 ASP.NET Core 應用程序中實現和管理后臺任務。BackgroundService 提供了簡潔的接口和良好的擴展性,使得開發者可以專注于實現具體的業務邏輯,而不需要關心后臺服務的啟動和停止管理。通過高級封裝,我們還可以添加日志記錄、錯誤處理等功能,進一步提高后臺服務的可靠性和可維護性。

在實際項目中,合理地封裝和使用 BackgroundService,可以顯著提升應用程序的功能和用戶體驗。希望本文能為您在 ASP.NET Core 開發中封裝和使用 BackgroundService 提供有益的參考和幫助。


閱讀原文:原文鏈接


該文章在 2025/2/21 12:25:45 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 91精品国产福利尤 | heyzo中文字幕 | 国产亚洲欧美日韩亚洲中文色 | 国产成人精品系列在线观看 | 国产人妻人伦精 | 2025天堂在线亚洲精品专区 | 精品国产一区二区三区色欲 | 高清无码亚洲影视 | 国产精品人妻无码久久久豆 | 精品无码av不卡一区二区三区 | 国产精品欧美久久久久天天影视 | 成人在线观看网站 | 精品无码在线看片 | av无码久久久久不卡蜜桃 | 18禁男女无遮挡啪啪网站 | 国产精品无码一区二区三区免 | 国产+精品+无码视频 | 国产麻豆精品一区二区三区 | 国产精品亚洲综合的第一页 | 91精品隔壁老王在线观看 | 91日本在线观看亚洲精品 | 国产高清无套内谢免费 | av无码午夜福利一区二区三区 | 成人免费片在线观看国产 | 成人综合网站在线 | 99久久精品午夜一区二区 | 国产日韩欧美精品大秀 | 丰满人妻av无码一区二区 | 国产成人无码一区a | 精品三级片在线 | 国产精品偷伦视频观看免费 | a极毛片一区二区三区免费看 | 国产夫妻内射一级一片 | 国产日韩亚洲欧美精品观看 | 精品亚洲国产成人a片在线鸭王 | 国产成人免费高潮激情视频 | 2025国产视频2区 | 国产毛片高清 | 国产高清av | 成人午夜福利免费无码 | 成人av免费在线播放 |