asp.net-core - 如何在 Blazor Server 关闭之前执行方法?
问题描述
我的程序必须执行在应用程序关闭之前调用的方法Checksum()
,因为当应用程序再次运行时必须验证校验和才能继续。如果该方法在应用程序关闭之前未运行,则不会注意到数据库上的更改。
我试过了,Circuit
但这不是我需要的。它在用户关闭与服务器的连接时运行该方法,但在服务器关闭时不运行。
我试过了,IHostApplicationLifetime
但这也不起作用。我也尝试过IApplicationLifetime
,但无法做我想做的事。
我在 BlazorServer 中尝试了所有这些并设置了Program.cs
断点。
我还没有找到关于它的好信息。可能是我实施IApplicationLifetime
或IHostApplicationLifetime
错误的方式。
解决方案
刚刚找到答案。
使用Microsoft.Extensions.Hosting.IHostedService
Program.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
}
我在这里找到它:链接
推荐阅读
- javascript - 图像未显示在反应中
- discord - 尝试使用 youtube_dl 解决我的音乐机器人的队列问题
- javascript - 当我使用`.call`方法设置上下文时,为什么嵌套函数中的`this`是窗口对象?
- r - R:使用棘手的分隔符将一列分成几行
- java - zxing-android-embedded 每次首次应用启动时的错误消息
- java - 如何更改我的代码以提高效率?
- c# - 如何在 C# 中引用父类使用的接口?
- ruby-on-rails - 如何使用 Rails 6.1 多数据库 ActiveRecord::ConnectionHandling 连接到主数据库和分片?
- javascript - 如何将 Firebase 对象置于响应状态?
- java - 在 jqwik 属性测试框架中寻找更好的方法来生成图的边列表