很抱歉,您提供的信息不完整,我无法直接给出答案。请您提供更具体的问题或信息,这样我才能更好地帮助您。

2026-03-30 15:211阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计408个文字,预计阅读时间需要2分钟。

很抱歉,您提供的信息不完整,我无法直接给出答案。请您提供更具体的问题或信息,这样我才能更好地帮助您。

前言

1.IHostedService是什么

很抱歉,您提供的信息不完整,我无法直接给出答案。请您提供更具体的问题或信息,这样我才能更好地帮助您。

IHostedService是为主机托管的服务的接口,为主机提供了两种启动服务的方法:StartAsync(CancellationToken):仅限于短期任务,因为托管服务是按顺序执行的,在StartAsync执行完成前不会执行其他任务。

前言

1.IHostedService是什么

IHostedService 接口为主机托管的对象定义了两种方法:

  • StartAsync(CancellationToken):应仅限于短期任务,因为托管服务是按顺序运行的,在 StartAsync 运行完成之前不会启动其他服务。
  • StopAsync(CancellationToken):在主机执行正常关闭时触发。 StopAsync 包含结束后台任务的逻辑。 实现 IDisposable 和终结器(析构函数)以处置任何非托管资源。

注意:如果应用意外关闭(例如,应用的进程失败),则可能不会调用 StopAsync。 因此,在 StopAsync 中执行的任何方法或操作都可能不会发生。

官网网址:learn.microsoft.com/zh-cn/dotnet/api/microsoft.extensions.hosting.ihostedservice?view=dotnet-plat-ext-7.0

一、IHostedService实现任务调度

1.新建任务调度类

public class TestHostedService : IHostedService, IDisposable { private Timer? _timer; public Task StartAsync(CancellationToken cancellationToken) { //相当于前端的setInterval定时执行,所以每过1秒都会执行一次 _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(1)); return Task.CompletedTask; } private void DoWork(object? state) { Console.WriteLine($"{DateTime.Now:yyyy-MM-dd HH:mm:ss}"); } public Task StopAsync(CancellationToken cancellationToken) { Console.WriteLine("StopAsync"); return Task.CompletedTask; } public void Dispose() { _timer?.Dispose(); } }

2.注册任务调度类

//添加主机服务 builder.Services.AddHostedService<TestHostedService>();

3.启动程序

本文共计408个文字,预计阅读时间需要2分钟。

很抱歉,您提供的信息不完整,我无法直接给出答案。请您提供更具体的问题或信息,这样我才能更好地帮助您。

前言

1.IHostedService是什么

很抱歉,您提供的信息不完整,我无法直接给出答案。请您提供更具体的问题或信息,这样我才能更好地帮助您。

IHostedService是为主机托管的服务的接口,为主机提供了两种启动服务的方法:StartAsync(CancellationToken):仅限于短期任务,因为托管服务是按顺序执行的,在StartAsync执行完成前不会执行其他任务。

前言

1.IHostedService是什么

IHostedService 接口为主机托管的对象定义了两种方法:

  • StartAsync(CancellationToken):应仅限于短期任务,因为托管服务是按顺序运行的,在 StartAsync 运行完成之前不会启动其他服务。
  • StopAsync(CancellationToken):在主机执行正常关闭时触发。 StopAsync 包含结束后台任务的逻辑。 实现 IDisposable 和终结器(析构函数)以处置任何非托管资源。

注意:如果应用意外关闭(例如,应用的进程失败),则可能不会调用 StopAsync。 因此,在 StopAsync 中执行的任何方法或操作都可能不会发生。

官网网址:learn.microsoft.com/zh-cn/dotnet/api/microsoft.extensions.hosting.ihostedservice?view=dotnet-plat-ext-7.0

一、IHostedService实现任务调度

1.新建任务调度类

public class TestHostedService : IHostedService, IDisposable { private Timer? _timer; public Task StartAsync(CancellationToken cancellationToken) { //相当于前端的setInterval定时执行,所以每过1秒都会执行一次 _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(1)); return Task.CompletedTask; } private void DoWork(object? state) { Console.WriteLine($"{DateTime.Now:yyyy-MM-dd HH:mm:ss}"); } public Task StopAsync(CancellationToken cancellationToken) { Console.WriteLine("StopAsync"); return Task.CompletedTask; } public void Dispose() { _timer?.Dispose(); } }

2.注册任务调度类

//添加主机服务 builder.Services.AddHostedService<TestHostedService>();

3.启动程序