是的,C# BackgroundService 可以在 IIS 中使用。BackgroundService 是 .NET Core 中的一個類,用于在后臺執行長時間運行的任務。要在 IIS 中使用 BackgroundService,您需要將其部署為一個 Windows 服務,而不是 ASP.NET Core Web 應用程序。
以下是將 BackgroundService 部署為 Windows 服務的步驟:
static void Main(string[] args)
{
var builder = WebHost.CreateDefaultBuilder(args);
// 添加 BackgroundService
builder.Services.AddSingleton<MyBackgroundService>();
// 配置服務
builder.Services.Configure<ServiceOptions>(options =>
{
options.StartTimeout = TimeSpan.FromMinutes(5);
options.StoppingTimeout = TimeSpan.FromMinutes(10);
});
// 啟動服務
var app = builder.Build();
app.Run();
}
MyBackgroundService
類中,實現 IStartupTask
和 IDisposable
接口,以便在服務啟動和停止時正確管理資源。例如:public class MyBackgroundService : IStartupTask, IDisposable
{
private Timer _timer;
public Task StartAsync(CancellationToken cancellationToken)
{
_timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromMinutes(30));
return Task.CompletedTask;
}
public Task StopAsync(CancellationToken cancellationToken)
{
_timer?.Change(Timeout.Infinite, 0);
return Task.CompletedTask;
}
public void Dispose()
{
_timer?.Dispose();
}
private void DoWork(object state)
{
// 執行后臺任務
}
}
請注意,將 BackgroundService 部署為 Windows 服務可能會導致一些與 ASP.NET Core Web 應用程序不同的行為和限制。確保在部署之前充分了解這些差異。