blob: effb5d7785c9ae62e565e74a9111f08c1d318d15 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
using System;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using VSH.Services;
namespace VSH.BackgroundServices;
/// <summary>
/// This service is not really necessary, but it is nice to have for future reference.
/// The job that this service is doing, could maybe become an http endpoint?
/// </summary>
public class AssetsCleanupBackgroundService : BackgroundService
{
private readonly IServiceProvider _serviceProvider;
private readonly ILogger<AssetsCleanupBackgroundService> _logger;
private static TimeSpan CleanupInterval => TimeSpan.FromSeconds(10);
public AssetsCleanupBackgroundService(
IServiceProvider serviceProvider,
ILogger<AssetsCleanupBackgroundService> logger
) {
_serviceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider));
_logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken) {
await StartInternalAsync(stoppingToken);
}
private async Task StartInternalAsync(CancellationToken cancellationToken) {
while (true) {
if (cancellationToken.IsCancellationRequested) {
_logger.LogDebug("CancellationRequested... Exiting");
break;
}
try {
await Task.Delay(CleanupInterval, cancellationToken);
} catch (TaskCanceledException) {
_logger.LogDebug("TaskCanceledException... Exiting");
break;
} catch (Exception ex) {
_logger.LogError($"Task.Delay exception: {ex.Message}. Exiting.");
break;
}
if (cancellationToken.IsCancellationRequested) {
_logger.LogDebug("CancellationRequested... Exiting");
break;
}
using var serviceProvider = _serviceProvider.CreateScope();
var assetsService = serviceProvider.ServiceProvider.GetRequiredService<AssetsService>();
await assetsService.RemoveUnusedProductImages();
}
}
}
|