Sobes.tech
Junior — Middle

Kā var īstenot mehānismu, kurā fonserviss atjaunina datus datu bāzē?

sobes.tech AI

Atbilde no AI

Lai īstenotu fondu pakalpojumu, kas periodiski atjaunina datus datu bāzē ar C#, var izmantot vairākus pieejas. Viena no izplatītākajām — izmantot klasi System.Threading.Timer vai Task ar ciklu un aizkavi.

Piemērs ar Timer izmantošanu:

using System;
using System.Threading;

class BackgroundUpdater
{
    private Timer _timer;

    public void Start()
    {
        // Sākam taimeri, kas izsauks metodi UpdateData ik pēc 10 minūtēm
        _timer = new Timer(UpdateData, null, TimeSpan.Zero, TimeSpan.FromMinutes(10));
    }

    private void UpdateData(object state)
    {
        // Datu atjaunošanas loģika
        // Piemēram, savienojums ar DB un vaicājumu izpilde
        Console.WriteLine("Datu atjaunošana datu bāzē: " + DateTime.Now);
    }

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

Vēl viena pieeja — izmantot asīnhronu metodi ar ciklu un aizkavi:

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()
    {
        // Datu atjaunošanas loģika
        Console.WriteLine("Datu atjaunošana datu bāzē: " + DateTime.Now);
    }

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

Vairāk sarežģītu scenāriju var izmantot specializētas bibliotēkas un ietvarus, piemēram, Quartz.NET uzdevumu plānošanai vai iebūvētās ASP.NET Core iespējas fonu pakalpojumiem (IHostedService).