Middle
Mis on sünkroniseerimiskontekst C#-s
sobes.tech AI
Vastus AI-lt
Sünkroniseerimiskontekst (SynchronizationContext) C#-s pakub abstraktsiooni tööde suunamiseks niitidel, võimaldades täita delekaate kindlas kontekstis. See mängib võtmerolli GUI-niitide (näiteks WinForms, WPF) ja ASP.NET-i juhtimisel, tagades kasutajaliidese elementide õige uuendamise või loogika täitmise sobivas niidis.
Peamised funktsioonid:
Send(SendOrPostCallback d, object state): Täidab sünkronselt delekaadi kontekstis. Kutsuva niit blokeeritakse kuni delekaadi täitmiseni.Post(SendOrPostCallback d, object state): Täidab asünkroonselt delekaadi kontekstis. Kutsuv niit ei blokeeru.
Kasutusnäited:
- WPF või WinForms-is esindab
SynchronizationContext.CurrentUI-niiti.PostvõiSendkasutamine võimaldab turvaliselt uuendada kasutajaliidese elemente taustaniidilt. - ASP.NET Core-is puudub vaikimisi
SynchronizationContext, ning päringud suunatakse otse niitidele pihust. Vanemates ASP.NET versioonides oli olemas sünkroniseerimiskontekst, mis tagas päringute täitmise samas kontekstis.
// Näide WinForms-is UI uuendamiseks taustaniidilt
private void button1_Click(object sender, EventArgs e)
{
SynchronizationContext uiContext = SynchronizationContext.Current; // UI-niidi konteksti saamine
Task.Run(() =>
{
// Pikk tegevus taustaniidil
Thread.Sleep(2000);
// Märkuse uuendamine sünkroniseerimiskonteksti kaudu
uiContext.Post(_ => label1.Text = "Uuendatud!", null);
});
}