我有一个带有Worker服务的ASP.NET应用程序,初始化方式如下.
builder.Services.AddHostedService<XXX>();
然后是服务人员本身.
public class XXX : BackgroundService
{
readonly ILogger<XXX> _logger;
public XXX(ILogger<XXX> logger)
{
_logger = logger;
}
public Task StartAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("Service Started.");
return Task.CompletedTask;
}
public Task StopAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("Service Stopped.");
return Task.CompletedTask;
}
protected async override Task ExecuteAsync(CancellationToken stoppingToken)
{
new MyInfiniteLoopClass();
}
}
在ExecuteAsync方法中,我创建了类MyInfiniteLoopClass,它由无限循环组成,比方说while(true)
.
问题是,只有当我打破那个无限循环时,大摇大摆才会跑.这意味着整个ASP.NET应用程序都停在该方法上.我怎么才能并肩而行呢?