Sobes.tech
Junior — Middle

როგორ შეიძლება განახორციელოს მექანიზმი, სადაც ფონური სერვისი მონაცემებს ბაზაში განაახლებს?

sobes.tech AI

პასუხი AI-სგან

C# тілінде мәліметтер базасындағы мәліметтерді уақытылы жаңарту үшін бірнеше тәсілдер қолданылуы мүмкін. Ең кең тарағандары — System.Threading.Timer класы немесе Task-пен цикл және кідіріс қолдану.

Timer қолдану мысалы:

using System;
using System.Threading;

class BackgroundUpdater
{
    private Timer _timer;

    public void Start()
    {
        // Әр 10 минут сайын `UpdateData` әдісін шақыратын таймерді іске қосу
        _timer = new Timer(UpdateData, null, TimeSpan.Zero, TimeSpan.FromMinutes(10));
    }

    private void UpdateData(object state)
    {
        // Мәліметтерді жаңарту логикасы
        // Мысалы, мәліметтер базасына қосылу және сұраулар орындау
        Console.WriteLine("Мәліметтер базасында жаңарту: " + DateTime.Now);
    }

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

Тағы бір әдіс — асинхронды әдісті циклмен және кідіріспен қолдану:

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()
    {
        // Мәліметтерді жаңарту логикасы
        Console.WriteLine("Мәліметтер базасында жаңарту: " + DateTime.Now);
    }

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

Күрделі сценарийлер үшін Quartz.NET сияқты арнайы кітапханалар мен фреймворктарды қолдануға болады, мысалы, тапсырмаларды жоспарлау үшін, немесе ASP.NET Core-дың ішкі мүмкіндіктерін пайдалану (IHostedService).