Sobes.tech
Junior — Middle

Кандай механизмди ишке ашырууга болот, анда фондук кызмат маалыматтарды базада жаңыртат?

sobes.tech AI

AIден жооп

C# tilida ma'lumotlar bazasidagi ma'lumotlarni vaqti-vaqti bilan yangilaydigan fon xizmatini amalga oshirish uchun bir nechta yondashuvlar mavjud. Eng keng tarqalganlardan biri System.Threading.Timer sinfini yoki Task bilan sikl va kechikish bilan foydalanish.

Timer bilan misol:

using System;
using System.Threading;

class BackgroundUpdater
{
    private Timer _timer;

    public void Start()
    {
        // Har 10 daqiqada bir `UpdateData` metodini chaqiradigan timerni ishga tushirish
        _timer = new Timer(UpdateData, null, TimeSpan.Zero, TimeSpan.FromMinutes(10));
    }

    private void UpdateData(object state)
    {
        // Ma'lumotlarni yangilash loqikasi
        // Masalan, ma'lumotlar bazasiga ulanish va so'rovlar bajarish
        Console.WriteLine("Ma'lumotlar bazasida yangilash: " + DateTime.Now);
    }

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

Boshqa variant — asinxron metod va sikl bilan kechikishni ishlatish:

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()
    {
        // Ma'lumotlarni yangilash loqikasi
        Console.WriteLine("Ma'lumotlar bazasida yangilash: " + DateTime.Now);
    }

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

Ko'proq murakkab ssenariylar uchun Quartz.NET kabi maxsus kutubxonalar va ramkalar, yoki ASP.NET Core ning ichki imkoniyatlari ishlatilishi mumkin (IHostedService).