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).