The next generation of the Teknik Services. Written in ASP.NET.
https://www.teknik.io/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.3 KiB
48 lines
1.3 KiB
using Microsoft.Extensions.Hosting; |
|
using Microsoft.Extensions.Logging; |
|
using System; |
|
using System.Collections.Generic; |
|
using System.Text; |
|
using System.Threading; |
|
using System.Threading.Tasks; |
|
using Teknik.Logging; |
|
using Teknik.Utilities; |
|
|
|
namespace Teknik.Tracking |
|
{ |
|
public class TrackingService : BackgroundService |
|
{ |
|
private readonly ILogger<Logger> _logger; |
|
|
|
public TrackingService(IBackgroundTaskQueue taskQueue, |
|
ILogger<Logger> logger) |
|
{ |
|
TaskQueue = taskQueue; |
|
_logger = logger; |
|
} |
|
|
|
public IBackgroundTaskQueue TaskQueue { get; } |
|
|
|
protected async override Task ExecuteAsync(CancellationToken cancellationToken) |
|
{ |
|
_logger.LogInformation("Queued Hosted Service is starting."); |
|
|
|
while (!cancellationToken.IsCancellationRequested) |
|
{ |
|
var workItem = await TaskQueue.DequeueAsync(cancellationToken); |
|
|
|
try |
|
{ |
|
await workItem(cancellationToken); |
|
} |
|
catch (Exception ex) |
|
{ |
|
_logger.LogError(ex, |
|
$"Error occurred executing {nameof(workItem)}."); |
|
} |
|
} |
|
|
|
_logger.LogInformation("Queued Hosted Service is stopping."); |
|
} |
|
} |
|
}
|
|
|