B-Arts DocumentationIndice generale

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();