Middle
C# da sinxronizatsiya konteksti nima?
sobes.tech AI
AIdan javob
C# tilida Sinkronlashtirish konteksti (SynchronizationContext) iplar ishini boshqarish uchun abstraktsiya taqdim etadi va delegatlarni ma'lum bir kontekstda bajarishga imkon beradi. U GUI iplarini (masalan, WinForms, WPF) va ASP.NETda muhim rol o'ynaydi, interfeys elementlarini to'g'ri yangilash yoki mos ipda logikani bajarishni ta'minlaydi.
Asosiy funksiyalar:
Send(SendOrPostCallback d, object state): Delegatni sinxron tarzda kontekstda bajaradi. So'rov yuboruvchi ip delegat bajarilishini kutadi.Post(SendOrPostCallback d, object state): Delegatni asinxron tarzda kontekstda bajaradi. So'rov yuboruvchi ip bloklanmaydi.
Foydalanish misollari:
- WPF yoki WinFormsda,
SynchronizationContext.CurrentUI ipini ifodalaydi.PostyokiSenddan foydalanish fon ipidan interfeys elementlarini xavfsiz tarzda yangilash imkonini beradi. - ASP.NET Coreda, odatda,
SynchronizationContextmavjud emas va so'rovlar to'g'ridan-to'g'ri iplar havuzidan keladi. Eski ASP.NET versiyalarida, so'rovlarni bir xil kontekstda bajarishni ta'minlaydigan sinxronizatsiya konteksti mavjud edi.
// WinFormsda fon ipidan UI ni yangilash uchun misol
private void button1_Click(object sender, EventArgs e)
{
SynchronizationContext uiContext = SynchronizationContext.Current; // UI kontekstini olish
Task.Run(() =>
{
// Oraliq operatsiyani fon ipida bajarish
Thread.Sleep(2000);
// Sinxronizatsiya konteksti orqali etiketkani yangilash
uiContext.Post(_ => label1.Text = "Yangilandi!", null);
});
}