SORU
23 EKİM 2008, PERŞEMBE


'Çağırmak arasındaki fark ne() ve Beginınvoke()

BeginInvoke() Invoke() arasındaki fark nedir merak ettim?

Esas olarak her biri için kullanılacaktır.

Bir iş parçacığı bir nesne oluşturmak ve çağırmak için aradım ve sadece BeginInvoke() arayıp bir temsilci arasındaki fark Nedir? EDİT: ya da aynı şeyi yapıyorlar mı?

CEVAP
23 EKİM 2008, PERŞEMBE


Temsilci demek istiyorsun./Beginınvoke veya Kontrol çağırır./Beginınvoke Çağırmak?

  • Temsilci.Çağır: eşzamanlı olarak Çalıştırılır, aynı iş parçacığı üzerinde.
  • Temsilci.Beginınvoke: zaman uyumsuz olarak, iş parçacığı havuzu iş parçacığı Yürütür.
  • Kontrol.Çağır: UI iş parçacığında Yürütür ama arayan iş parçacığı devam etmeden önce tamamlanması için bekler.
  • Kontrol.Beginınvoke: kullanıcı arabirimi iş parçacığı, iplik arama tamamlama beklemez Yürütür.

Tim'in cevap çoğunlukla doğru Temsilci dişli olmasına rağmen Beginınvoke kullanmak isteyebilirsiniz zaman bahseder.Beginınvoke, sanıyorum.

Windows Forms uygulamaları için gereken öneririmgenellikleBeginınvoke kullanın. Bu şekilde kilitlenme endişe, örneğin gerek yok - ama UI senin yanında bak zaman güncellendi olmadığını anlamak gerekir! Özellikle, UI iş parçacığı görüntüleme amaçları için kullanmak üzere olabilecek veri değiştirmeniz gerekmiyor. Eğer Ad ve Soyad özelliklere sahip bir Kişi varsa, örneğin, ve yaptı

person.FirstName = "Kevin"; // person is a shared reference
person.LastName = "Spacey";
control.BeginInvoke(UpdateName);
person.FirstName = "Keyser";
person.LastName = "Soze";

sonra UI iyi görüntüleme sona erebilir "Keyser Spacey". (Görüntü dışarıdan bir şans "" ama sadece hafıza garip aracılığıyla modeli.) Soze Kevin var

Sorun, bu tür yoksa, ancak, Kontrol.Beginınvoke daha kolay değil mi, ve iyi bir neden için bir arka plan iş parçacığı önlemek olacaktır. Windows Forms Denetim ekibi kullanabileceğiniz garantili olduğunu unutmayın.Beginınvoke "ve" tavır - yani hiç olmadan Endınvoke arıyor. ateşi unutun bir yer Bu genel olarak zaman uyumsuz aramalar için geçerli değildir: normalde her BeginXXX ilgili EndXXX bir ara, genellikle geri içinde olmalıdır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AndyMcMillinTV

    AndyMcMillin

    6 HAZİRAN 2007
  • MultiPlayStationMan

    MultiPlaySta

    17 Aralık 2009
  • pjtoohot

    pjtoohot

    15 NİSAN 2008