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()
{
// Սկսում ենք տայմեր, որը every 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)։