BBaseWorkerService - Esempi
Worker periodico asincrono
using B.BBaseClass;
using B.BData;
using B.BLog;
public sealed class SynchronizationWorker : BBaseWorkerService
{
public SynchronizationWorker(BConnection connection, BLogTracerConfig logConfig)
: base("Synchronization", "1.0.0", connection, logConfig)
{
}
public override int GetTimer()
{
return 60_000;
}
protected override bool CheckBConfig()
{
return Cnn != null;
}
public override async Task<bool> ElaborationAsync(CancellationToken stoppingToken)
{
await Task.Delay(10, stoppingToken);
return true;
}
}
GetTimer restituisce l'intervallo in millisecondi. ElaborationAsync deve rispettare il CancellationToken. Se StopWorkerOnFailureElaboration è true, un risultato false interrompe il worker.
Avvio e arresto
SynchronizationWorker worker = new SynchronizationWorker(connection, logConfig);
worker.ElaborationStarted += (service, time) =>
{
Console.WriteLine($"Avvio elaborazione: {time}");
};
bool started = await worker.StartWorkerAsync(args);
// Durante l'arresto dell'applicazione:
worker.StopWorker();
