SynchronizationContext
sınıfını öğreniyorum. Bir WinForm/WPF uygulaması bağlamında SynchronizationContext.SetSynchronizationContext()
'u aramak için yaygın kullanım senaryolarının ne olduğunu anlamaya çalışıyorum. Bir iş parçacığının SynchronizationContext
değerini ayarlamak ne demektir? Ne zaman yapmalıyım ve neden? Ayrıca, eğer ayarlarsam, bir noktada onu çözmemeli miyim?Bir UI uygulamasında SynchronizationContext.SetSynchronizationContext() ne zaman çağırılır?
Düzenleme: SetSynchronizationContext()
düşündüğünü neden Cevaben
, @Hans Passant istedi. Sahip olduğum fikir, içeriği bir çalışan iş parçacığına ayarlamaktır, böylece bu iş parçacığı üzerinde çalışan kodun kullanılması için bir bağlam vardır.
private void button3_Click(object sender, EventArgs e)
{
var syncContext = SynchronizationContext.Current;
Task.Factory.StartNew(() =>
{
// Setup the SynchronizationContext on this thread so
// that SomeAsyncComponentThatNeedsACurrentContext
// will have a context when it needs one
if (SynchronizationContext.Current == null)
SynchronizationContext.SetSynchronizationContext(syncContext);
var c = new SomeAsyncComponentThatNeedsACurrentContext();
c.DoSomething();
});
}
Kullanımının güncellenmemesi gerekir. – Sylvain
güncellemem cevabınızı değiştiriyor mu? SynchronizationContext'i çalışan bir iş parçacığına ayarlamayı da düşünür müsünüz? – Sylvain
Bunun hakkında ne düşündüğünü duymak isterim ... Teşekkürler – Sylvain