Sobes.tech
Junior — Middle

Kako implementirati mehanizam u kojem pozadinska usluga ažurira podatke u bazi podataka?

sobes.tech АИ

Одговор од АИ

Za implementaciju pozadinske usluge koja periodično ažurira podatke u bazi podataka u C#, može se koristiti nekoliko pristupa. Jedan od najčešćih je korišćenje klase System.Threading.Timer ili Task sa petljom i odlaganjem.

Primer sa Timer:

using System;
using System.Threading;

class BackgroundUpdater
{
    private Timer _timer;

    public void Start()
    {
        // Pokrećemo tajmer koji poziva metodu UpdateData svakih 10 minuta
        _timer = new Timer(UpdateData, null, TimeSpan.Zero, TimeSpan.FromMinutes(10));
    }

    private void UpdateData(object state)
    {
        // Logika za ažuriranje podataka u bazi
        // Na primer, povezivanje na bazu i izvršavanje upita
        Console.WriteLine("Ažuriranje podataka u bazi: " + DateTime.Now);
    }

    public void Stop()
    {
        _timer?.Change(Timeout.Infinite, 0);
    }
}

Druga opcija je korišćenje asinhrone metode sa petljom i odlaganjem:

using System;
using System.Threading.Tasks;

class BackgroundUpdater
{
    private bool _isRunning = false;

    public async Task StartAsync()
    {
        _isRunning = true;
        while (_isRunning)
        {
            UpdateData();
            await Task.Delay(TimeSpan.FromMinutes(10));
        }
    }

    private void UpdateData()
    {
        // Logika za ažuriranje podataka
        Console.WriteLine("Ažuriranje podataka u bazi: " + DateTime.Now);
    }

    public void Stop()
    {
        _isRunning = false;
    }
}

Za složenije scenarije, mogu se koristiti specijalizovane biblioteke i okviri, poput Quartz.NET za planiranje zadataka ili ugrađene mogućnosti ASP.NET Core za pozadinske usluge (IHostedService).