2009-11-10 15 views

cevap

15

this explanation Bkz System.Threading.SynchronizationContext.Current boş.

SynchronizationContext.Current sadece

blog yazısı geçici bir çözüm önermektedir (aslında buna ihtiyacı yoktur, sadece iplik olan) ana iş parçacığı ayarlanır. Çalışmak için

+0

Güzel geçici çözüm olarak

synchronizationContext = System.Threading.SynchronizationContext.Current; 

yılında

! – psulek

18

. UI iş parçacığı olarak

private SynchronizationContext synchronizationContext; 

sınıfınızın (ana iş parçacığı) işçi iş parçacığı

synchronizationContext.Post( 
    state => DoUpdateInUIThread((Abc)state),  
    abc); 
+0

SenkronlaştırmaContext, çalışan iş parçacığı içinde nasıl oluşturulur veya bu iletime geçirilir? – Tim

+0

Diyelim ki formunuzda bir 'BackgroundWorker 'kullanıyorsunuz. Kurucunuzda 'SynchronizationContext.Current' öğesini kaydederseniz veya etkinliği bir sınıf düzeyi değişkeni olarak yüklerseniz, 'RunWorkerCompleted' işleyicisi erişilebilir olacaktır. Alternatif olarak, işi bir sunum yapan gibi başka bir sınıfta yapıyorsanız, kullanıcı arabiriminde sunumu oluşturabilir ve yapıcıdaki bağlamı kapatabilirsiniz. –

İlgili konular