首页 > 解决方案 > 如何在 Blazor Server 关闭之前执行方法?

问题描述

我的程序必须执行在应用程序关闭之前调用的方法Checksum(),因为当应用程序再次运行时必须验证校验和才能继续。如果该方法在应用程序关闭之前未运行,则不会注意到数据库上的更改。

我试过了,Circuit但这不是我需要的。它在用户关闭与服务器的连接时运行该方法,但在服务器关闭时不运行。

我试过了,IHostApplicationLifetime但这也不起作用。我也尝试过IApplicationLifetime,但无法做我想做的事。

我在 BlazorServer 中尝试了所有这些并设置了Program.cs断点。

我还没有找到关于它的好信息。可能是我实施IApplicationLifetimeIHostApplicationLifetime错误的方式。

标签: asp.net-coreblazorblazor-server-side

解决方案


刚刚找到答案。

使用Microsoft.Extensions.Hosting.IHostedServiceProgram.cs:

public class Program: IHostedService
{
  public static void Main(string[] args)
  {
      CreateHostBuilder(args).Build().Run();
  }

  public static IHostBuilder CreateHostBuilder(string[] args) =>
      Host.CreateDefaultBuilder(args)
          .ConfigureWebHostDefaults(webBuilder =>
          {
              webBuilder.UseStartup<Startup>();
          });

  public async Task StartAsync(CancellationToken cancellationToken)
  {
      //RUN A METHOD ON APPLICATION START
  }

  public async Task StopAsync(CancellationToken cancellationToken)
  {
      //RUN A METHOD ON APPLICATION STOP
  }
}

启动.cs

public void ConfigureServices(IServiceCollection services)
{
    services.AddHostedService<Program>(); //ADD THIS
}

我在这里找到它:链接


推荐阅读