繁体   English   中英

blazor 服务器端:如何在特定时间启动线程

[英]blazor server side: How to start a thread at a specific time

I want send SMS or Email or do something else in specific date and time for example in Birthday of customer at 11 am, where Datetime format birthday stored in SQL Database, by C# Blazor Server Side app. 我已阅读https://www.codeproject.com/Articles/12117/Simulate-a-Windows-Service-using-ASP-NET-to-run-scC#:如何在特定时间启动线程

有没有更新或更好的建议来做到这一点?

正如 Panagiotis Kanavos 所说,Blazor 服务器端是 ASP.NET 核心服务器应用程序。 ASP.NET 内核内置库来运行后台服务。 ASP.NET 内核可以运行 Blazor 服务和后台服务。

您可以使用 Blazor 处理用户输入,然后使用后台服务器在特定时间发送 Email。

更多细节,你可以参考这篇文章和下面的代码示例:

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>();
            });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM