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