WPF Cross Thread Operasyonlar

WPF ve Forms kütüphanelerinde programatik olarak açılmış farklı bir thread’ten main thread içerisinde yaratılmış olan gui nesnelerini kullanmak exception’a neden olur. Sözgelimi bir butona basıldığında çalışan bir döngüye ait değişkenin değeri bir label’a yazdırılmak istenirse ;

Bu sorunun giderilmesi için söz konusu gui nesnesine ait Dispatcher property’sine ait Invoke() metodu aşağıdaki gibi kullanılmalıdır.

Senkron çalışan bu metot bir delege parametresi (dlgTest) almakta ve bu delege ile temsil edilen metot (Test) içerisinde label’a yazdırma işlemi gerçekleştirilmektedir. Şüphesiz aynı işlemler BeginInvoke() ile asenkron da yapılabilir.

Forms kütüphanesinde ise benzer işlemler söz konusu kontrolün Invoke() metodu ile gerçekleştirilebilir.

WPF’te Dispatcher kullanımı veya Threading hakkında daha fazla bilgi için pusula yayıncılıktan çıkmış olan WPF kitabımdan faydalabilirsiniz.

Reklamlar