SeemGen/Services/TempFileCleanupService.cs

59 lines
2.0 KiB
C#

namespace BLAIzor.Services
{
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
public class TempFileCleanupService : BackgroundService
{
private readonly ILogger<TempFileCleanupService> _logger;
private readonly string _tempDirectory;
private readonly TimeSpan _checkInterval = TimeSpan.FromMinutes(30);
private readonly TimeSpan _fileLifetime = TimeSpan.FromHours(1);
public TempFileCleanupService(ILogger<TempFileCleanupService> logger, IWebHostEnvironment env)
{
_logger = logger;
_tempDirectory = Path.Combine(env.WebRootPath, "temp");
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
_logger.LogInformation("TempFileCleanupService started.");
while (!stoppingToken.IsCancellationRequested)
{
try
{
if (Directory.Exists(_tempDirectory))
{
var now = DateTime.UtcNow;
var files = Directory.GetFiles(_tempDirectory, "style_*.css");
foreach (var file in files)
{
var fileInfo = new FileInfo(file);
if (now - fileInfo.LastWriteTimeUtc > _fileLifetime)
{
fileInfo.Delete();
_logger.LogInformation($"Deleted old temp file: {fileInfo.Name}");
}
}
}
}
catch (Exception ex)
{
_logger.LogError(ex, "Error occurred during temp file cleanup.");
}
await Task.Delay(_checkInterval, stoppingToken);
}
_logger.LogInformation("TempFileCleanupService stopped.");
}
}
}