Middle
რა არის სინქრონიზაციის კონტექსტი C#-ში?
sobes.tech AI
პასუხი AI-სგან
C# dilində SynchronizationContext, iş parçacığı idarəetməsi üçün abstraksiya təmin edir və delegate-ləri müəyyən bir kontekstdə icra etməyə imkan verir. O, GUI iş parçaları (məsələn, WinForms, WPF) və ASP.NET-də əsas rol oynayır, interfeys elementlərinin düzgün yenilənməsini və ya müvafiq iş parçacığında loqikanın icrasını təmin edir.
Əsas funksiyalar:
Send(SendOrPostCallback d, object state): Sinxron şəkildə delegate-i kontekst daxilində icra edir. Çağıran iş parçacığı delegate-in tamamlanmasını gözləyir.Post(SendOrPostCallback d, object state): Asinxron şəkildə delegate-i kontekst daxilində icra edir. Çağıran iş parçacığı bloklanmır.
İstifadə nümunələri:
- WPF və ya WinForms-də,
SynchronizationContext.CurrentUI iş parçacığını təmsil edir.Postvə yaSendistifadə etməklə, fon iş parçacığından interfeys elementlərini təhlükəsiz şəkildə yeniləmək mümkündür. - ASP.NET Core-da, standart olaraq,
SynchronizationContextmövcud deyil və sorğular birbaşa havuzdakı iş parçacılarına göndərilir. Köhnə ASP.NET versiyalarında, sorğuların eyni kontekstdə icrasını təmin edən sinxronizasiya konteksti mövcud idi.
// WinForms-də fon iş parçacığından UI-ni yeniləmək üçün nümunə
private void button1_Click(object sender, EventArgs e)
{
SynchronizationContext uiContext = SynchronizationContext.Current; // UI kontekstini əldə et
Task.Run(() =>
{
// Uzunmüddətli əməliyyatı fon iş parçacığında icra et
Thread.Sleep(2000);
// Sinxronizasiyə kontekst vasitəsilə etiketi yenilə
uiContext.Post(_ => label1.Text = "Yeniləndi!", null);
});
}