IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   C# (https://www.ircforumlari.net/c/)
-   -   Threads ler arasinda guvenle GUI guncellemek icin BeginInvoke kullanma (https://www.ircforumlari.net/c/484392-threads-ler-arasinda-guvenle-gui-guncellemek-icin-begininvoke-kullanma.html)

YazılımMimarı 24 Mayıs 2012 12:17

Threads ler arasinda guvenle GUI guncellemek icin BeginInvoke kullanma
 
C#'ta WinForm lar ile çalışıyorum. Bir Data Modelim ve bu modele bağlı olarak GUI kısmındaki component'ların içine gelen değerleri güncelliyorum. Fakat Thread'ler çalışmaya başladığımda GUI kısmında donmalara hatta işlevsiliğe sebep olduğunu farkettim. Ihtiyacım olan GUI ile değerlerin farklı Threads'ler üzerinden birbirinden bağımsız çalışması.

Çözüm'ü biraz google araştırması ile buldum. delegate yani devredilebilir fonksiyonlar.

BeginInvoke :

PHP- Kodu:

delegate void SetWeatherCallback String weather);

private 
void SetWeather (String weather)

if(
thisInvokeRequired)

SetWeatherCallback cb = new SetWeatherCallback (SetWeather);
this.Invoke (cb, new Object [] {"sunny"}).; 
}
else
{
textBoxWeather.Text weather
}


Farklı bir Thread çağırdığımızda, eğer this. InvokeRequired değeri true ise, GUI Thread'e erişemiyor yani birbirinden bağımsız çalışıyorlar.

Dahada açarsak,
BeginInvoke asenkron ve Invoke senkron çalışır.
Kod başka bir iş parçacığı çalıştırıldığında bu UI (ana iş parçacığı üzerinde çalıştığı) UPDATE izin verilmez. Çağırmak bir gerekiyorsa bunu tekrar güvenle UI güncelleyebilirsiniz. Ana iş parçacığı için bir invoke gereklidi bunu önce siz kontrol etmeniz gerekmektedir.

Kolay gelsin.

Turgay Can

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 15:06.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2025 IRCForumlari.Net Sparhawk