Middle
C#-də sinxronizasiya konteksti nədir?
sobes.tech Süni İntellekt
AI-dan cavab
C# dilində Sinkronizasiya Konteksti (SynchronizationContext), iş parçacığı idarəetməsi üçün abstraksiya təmin edir və delegatların müəyyən bir kontekstdə icrasına imkan verir. O, GUI iş parçacqları (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): Delegatı sinxron şəkildə kontekstdə icra edir. Çağıran iş parçacığı delegat tamamlanana qədər bloklanır.Post(SendOrPostCallback d, object state): Delegatı asinxron şəkildə kontekstdə 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);
// Sinxronizasiya konteksti vasitəsilə etiketi yenilə
uiContext.Post(_ => label1.Text = "Yeniləndi!", null);
});
}