C# blazor服务器端:如何在特定时间启动线程
我想在特定的日期和时间发送短信或电子邮件或做其他事情,例如在上午11点的客户生日,其中Datetime格式的生日存储在SQL数据库中,通过C Blazor服务器端应用程序。 我读过,也读过C# blazor服务器端:如何在特定时间启动线程,c#,sql,asp.net-core,blazor,blazor-server-side,C#,Sql,Asp.net Core,Blazor,Blazor Server Side,我想在特定的日期和时间发送短信或电子邮件或做其他事情,例如在上午11点的客户生日,其中Datetime格式的生日存储在SQL数据库中,通过C Blazor服务器端应用程序。 我读过,也读过 有什么更新或更好的建议吗?正如Panagiotis Kanavos所说,Blazor服务器端是一个ASP.NET核心服务器应用程序。ASP.NET Core具有内置库以运行后台服务。ASP.NET核心可以同时运行Blazor服务和后台服务 您可以使用Blazor处理用户输入,然后使用后台服务器在特定时间发送
有什么更新或更好的建议吗?正如Panagiotis Kanavos所说,Blazor服务器端是一个ASP.NET核心服务器应用程序。ASP.NET Core具有内置库以运行后台服务。ASP.NET核心可以同时运行Blazor服务和后台服务 您可以使用Blazor处理用户输入,然后使用后台服务器在特定时间发送电子邮件 更多详细信息,您可以参考以下代码示例:
public class TestHostedService: BackgroundService
{
private readonly ILogger _logger;
public TestHostedService(ILoggerFactory loggerFactory)
{
_logger = loggerFactory.CreateLogger<TestHostedService>();
}
protected async override Task ExecuteAsync(
CancellationToken cancellationToken)
{
do
{
if (DateTime.Now.Hour == 11)
{
//do something
}
//fired every one hour
await Task.Delay(TimeSpan.FromHours(1), cancellationToken);
}
while (!cancellationToken.IsCancellationRequested);
}
}
要运行它,您应该将其添加为HostedService
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
}).ConfigureServices((hostcontext, service) => {
service.AddHostedService<TestHostedService>();
});
它是服务器端的,即ASP.NET核心,这意味着您可以使用任何喜欢的ASP.NET核心技术。您可以使用计时器创建BackgroundService,或添加库HangFire、Coravel、Quartz.net或任何其他您喜欢的rlibrary。您发布的第一个链接是2005年发布的,完全不适合.net Core。如果您确实想创建一个单独的服务/守护程序,您可以使用Worker模板并添加适当的Windows或Linux包,将Worker转换为serviceCheck以查看后台服务的示例,包括定时和排队作业队列可以添加使其运行的services.AddHostedService行。在Startup.ConfigureServices中调用AddHostedService就足够了,而且容易得多