Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# blazor服务器端:如何在特定时间启动线程_C#_Sql_Asp.net Core_Blazor_Blazor Server Side - Fatal编程技术网

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处理用户输入,然后使用后台服务器在特定时间发送

我想在特定的日期和时间发送短信或电子邮件或做其他事情,例如在上午11点的客户生日,其中Datetime格式的生日存储在SQL数据库中,通过C 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就足够了,而且容易得多