成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何使用Asp.net Core實現定時任務,輕松解決任務調度問題!

開發 前端
本篇文章主要介紹如何使用Asp.net core自帶的Hosting模塊和System.Timers.Timer類,以及Hangfire和Quartz.NET分別實現定時任務。將展示一個完整的示例代碼,并詳細解釋代碼中各個部分的含義和作用,以幫助理解實現過程和相關知識點。

前言

Asp.net core作為一種高效、跨平臺的web框架,在開發過程中,我們常常需要在后臺執行定時任務,例如清理無用文件、生成報告、發送郵件等任務。對于這種需求,我們可以使用第三方庫(如Hangfire或Quartz.NET)來實現任務調度和執行,也可以使用asp.net core自帶的Hosting模塊和System.Timers.Timer類來實現簡單的定時任務。

本篇文章主要介紹如何使用Asp.net core自帶的Hosting模塊和System.Timers.Timer類,以及Hangfire和Quartz.NET分別實現定時任務。將展示一個完整的示例代碼,并詳細解釋代碼中各個部分的含義和作用,以幫助理解實現過程和相關知識點。

自帶的Hosting模塊實現任務調度

下面將分步驟詳細介紹如何使用asp.net core自帶的Hosting模塊和System.Timers.Timer類來實現定時任務。

  • 創建一個控制臺應用程序

首先,在Visual Studio中創建一個控制臺應用程序。

  • 添加必要的NuGet包

在項目中添加以下NuGet包:

  • Microsoft.Extensions.Hosting.Abstractions
  • Microsoft.Extensions.Hosting

這兩個NuGet包提供了asp.net core的Hosting模塊和應用程序生命周期管理功能。

  • 創建一個HostBuilder對象

在Main方法中創建一個HostBuilder對象:

static void Main(string[] args)
{
    var builder = new HostBuilder()
            .UseConsoleLifetime()   // 控制臺生命周期管理
            .ConfigureServices((hostContext, services) =>
            {
                 // 配置服務
            });
                   
    builder.Build().Run();
}

HostBuilder提供了配置應用程序服務、托管生命周期、配置應用程序配置等功能。可以使用UseConsoleLifetime方法來配置應用程序的控制臺生命周期管理。

  • 添加定時任務

在ConfigureServices方法中添加定時任務:

ConfigureServices((hostContext, services) =>
{
    // 添加定時器組件
    services.AddHostedService<MyTimer>();
});

上面的代碼中,我們向服務容器中添加了一個MyTimer類,這個類實現了IHostedService接口。

  • 實現IHostedService接口

在MyTimer類中實現IHostedService接口:

// MyTimer.cs
public class MyTimer : IHostedService, IDisposable
{
    private readonly Timer _timer;
    public MyTimer()
    {
        _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(5)); // 每5秒執行一次DoWork方法
    }
    public Task StartAsync(CancellationToken cancellationToken)
    {
        Console.WriteLine("定時任務已啟動");
        return Task.CompletedTask;
    }
    public Task StopAsync(CancellationToken cancellationToken)
    {
        Console.WriteLine("定時任務已停止");
        return Task.CompletedTask;
    }
    public void Dispose()
    {
        _timer?.Dispose();
    }
    private void DoWork(object state)
    {
        Console.WriteLine($"定時任務執行中,當前時間:{DateTime.Now}");
    }
}

MyTimer類繼承了IHostedService接口,該接口定義了應用程序生命周期管理的方法。在MyTimer的構造函數中,我們創建了一個計時器,并在每5秒鐘的時間間隔內執行DoWork方法。在StartAsync方法中,輸出“定時任務已啟動”信息;在StopAsync方法中,輸出“定時任務已停止”信息。Dispose方法用于釋放計時器資源。

  • 運行應用程序

完成上面的步驟后,我們可以運行應用程序,觀察控制臺輸出的結果

每5秒鐘控制臺會輸出一條類似于“定時任務執行中,當前時間:2023/06/12 15:34:48”的信息,表示定時任務正在運行。當我們手動停止應用程序時,控制臺會輸出“定時任務已停止”信息,表示定時任務已經被成功停止。

至此,我們成功地使用asp.net core自帶的Hosting模塊和System.Timers.Timer類實現了定時任務。在實際應用中,可以根據需求添加更多的定時任務,并調整計時器的時間間隔等參數。

Hangfire實現任務調度

下面將詳細介紹如何使用asp.net core引入Hangfire來實現任務調度和執行。

  • 創建一個asp.net core Web應用程序

首先,在Visual Studio中創建一個asp.net core Web項目。

  1. 添加必要的NuGet包

在項目中添加以下NuGet包:

  • Hangfire.AspNetCore
  • Hangfire.SqlServer

這兩個NuGet包提供了Hangfire框架所需的組件和功能。

  • 配置Hangfire

在Startup.cs文件中配置Hangfire:

public void ConfigureServices(IServiceCollection services)
{
    // 配置Hangfire
    GlobalConfiguration.Configuration.UseSqlServerStorage(Configuration.GetConnectionString("DefaultConnection"));
    services.AddHangfire(config => config.UseSqlServerStorage(Configuration.GetConnectionString("DefaultConnection")));
    services.AddHangfireServer();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // 啟用Hangfire儀表板
    app.UseHangfireDashboard();

    // ...
}

上述代碼中,我們在ConfigureServices方法中配置了Hangfire,并使用AddHangfireServer方法啟用了Hangfire服務。同時,我們也針對數據庫進行了配置。

在Configure方法中,我們除了啟用了Hangfire儀表板之外,還需要在中間件管道中注冊Hangfire服務:

app.UseHangfireServer();
  • 添加定時任務

在Actions文件夾內創建ScheduledTasks類,并添加定時任務:

public class ScheduledTasks
{
    public void DoSomething()
    {
        Console.WriteLine("Hangfire: Doing something...");
    }

    public void DoSomethingElse()
    {
        Console.WriteLine("Hangfire: Doing something else...");
    }
}

在上面的代碼中,我們創建了兩個定時任務:DoSomething和DoSomethingElse。

  • 注冊定時任務

在ConfigureServices方法中注冊定時任務:

services.AddTransient<ScheduledTasks>();

// 注冊定時任務
RecurringJob.AddOrUpdate<ScheduledTasks>(x => x.DoSomething(), Cron.Minutely);
RecurringJob.AddOrUpdate<ScheduledTasks>(x => x.DoSomethingElse(), Cron.Hourly);

在上面的代碼中,我們使用AddOrUpdate方法來注冊定時任務。第一個參數為委托表達式,指定了要執行的任務;第二個參數為Cron表達式,指定了任務的執行時間。

在上面的代碼中,我們每分鐘執行DoSomething任務,每小時執行DoSomethingElse任務。

  • 運行應用程序

完成上面的步驟后,我們可以運行應用程序在Hangfire儀表板中查看定時任務的執行情況。

在儀表板的"Recurring jobs"選項卡中,我們可以看到我們剛剛注冊的兩個定時任務以及它們的下一次執行時間。在任務執行時,我們可以在控制臺輸出中看到“Hangfire: Doing something…”或“Hangfire: Doing something else…”等信息,表示任務已經被成功執行。

至此,我們成功地使用asp.net core引入Hangfire來實現任務調度和執行,并注冊了兩個定時任務進行演示。在實際應用中,我們可以根據需求添加更多的定時任務,并根據具體業務場景進行調整和優化。

責任編輯:姜華 來源: 今日頭條
相關推薦

2023-06-29 07:55:52

Quartz.Net開源

2024-05-13 09:49:30

.NETQuartz庫Cron表達式

2024-05-31 13:07:29

.NET Core定時任務編程

2024-11-04 16:01:01

2022-01-04 11:15:02

Spring Boot任務阻塞

2009-10-28 10:05:29

Ubuntucrontab定時任務

2022-04-11 15:56:51

Golang代碼框架

2020-12-21 07:31:23

實現單機JDK

2024-12-27 08:24:55

2021-03-17 09:45:31

LazyCacheWindows

2021-02-02 16:19:08

Serilog日志框架

2021-02-06 21:40:13

SignalR通訊TypeScript

2021-03-10 09:40:43

LamarASP容器

2021-02-03 13:35:25

ASPweb程序

2021-02-28 20:56:37

NCache緩存框架

2021-03-03 22:37:16

MediatR中介者模式

2021-01-28 22:39:35

LoggerMessa開源框架

2021-01-31 22:56:50

FromServiceASP

2021-01-07 07:39:07

工具接口 Swagger

2023-12-26 07:44:00

Spring定時調度
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: av黄色在线 | 欧美日韩亚洲视频 | 亚洲一区二区av在线 | 久久精品二区 | 亚洲精品乱码久久久久v最新版 | 免费毛片网| 久久久网 | 午夜影院视频 | 欧美一区免费 | 成人做爰69片免费观看 | 国产精品一区二区在线免费观看 | 久久精品中文字幕 | 久久久久国产精品一区二区 | 日韩在线小视频 | www.日韩系列 | 超碰免费观看 | 亚洲视频中文字幕 | 99国产精品99久久久久久 | 免费在线色 | 日本a在线| 一区二区在线免费观看 | 91成人免费看 | 久草中文在线观看 | 日韩快播电影网 | 精品视频国产 | 噜啊噜在线 | 三区在线观看 | 国产在线精品一区二区 | 美女一级a毛片免费观看97 | 国产美女在线观看 | 中文字幕亚洲欧美日韩在线不卡 | 国产精品99久久久久久动医院 | 天堂亚洲 | 在线一区观看 | 久久婷婷麻豆国产91天堂 | 人人干人人爽 | 视频第一区 | 国产精品欧美一区二区 | 亚洲综合视频一区 | 亚洲欧美第一视频 | 精品久久精品 |