Ana iş parçacığımda (WPF uygulaması) bir ListBox nesnesi var. Neden BackgroundWorker iş parçacığına erişemiyorum. Bildiğim kadarıyla, her bir iş parçacığı için yığın ayrıdır, ancak yığın ortaktır. ListBox nesnesi yığın halinde oluşturulmadı. Bu durumda neden erişilebilir değil. ListBox başvurusunu parametre olarak geçmeye çalıştım ve BackgroundWorker'daki içeriğine erişmeye çalıştım. C++ 'dan farklı nesneler arasında nesne paylaşımı kavramı mı?Bir BackgroundWorker ile ana iş parçacığı arasında nesne paylaşımı
cevap
WinForms gibi, WPF'nin tasarımı, tüm kullanıcı arabirim öğelerine yalnızca bunları oluşturan parçacıklardan erişilmesi gereği ile büyük ölçüde basitleştirilmiştir.
Çok iş parçacıklı bir program yazmaya çalıştığınızda, bu "özellik" büyük bir sınırlama gibi görünebilir. Bir kullanıcı arayüzü elemanının en basit özelliklerinin bir arka plan iş parçacığından doğrudan değiştirilmesi bile imkansızdır. Eğer öyleyse, arka plan iş parçacıklarını WPF ile nasıl kullanabiliriz?
Yanıt, kullanıcı arabirimine yönelik eylemlerimizi, işin çakışma olmadan gerçekleştirilebileceği ön plan iş parçacığı üzerine dönüştürmemiz gerektiğidir. Daha sıkı konuşmak gerekirse, eylemlerimizi değiştirmeye çalıştığımız unsuru oluşturan iş parçacığı bağlamında yürütmeliyiz.
WPF diş çekme konu büyük bir tanesidir ama burada mükemmel bir giriş düzeyinde bir makale: Bu makaleyi okursanız
başarmak Dispatcher
nasıl kullanılacağını görmek için sizin threading modelini ihlal etmeden yapılan eylemler.
- 1. BackgroundWorker iş parçacığı WinForms UI güncelleştirmesi
- 2. BackgroundWorker - Çapraz iş parçacığı geçerli değil
- 3. Ana iş parçacığı
- 4. İki iş parçacığı ile ana program arasındaki bir nesneyi paylaşma
- 5. backgroundworker tamamlanmış olay işleyicisi hangi iş parçacığı üzerinde çalışır?
- 6. NSThread sleepfortimeinterval ana iş parçacığı
- 7. AudioServicesPlaySystemSound ve ana iş parçacığı
- 8. Ana iş parçacığı neden bekler
- 9. Bir aramayı klonlamak, ana iş parçacığı
- 10. İş parçacığı tanıtıcısı iş parçacığı tanıtıcısı
- 11. Ana iş parçacığı üzerinde kod yürütme zorlaması
- 12. UICollectionView bloklarını kilitleme ana iş parçacığı
- 13. Kinect ile iş parçacığı
- 14. Ana iş parçacığı üzerinde hizmet nasıl çalıştırılır?
- 15. "Uyarı", ana() iş parçacığı içinde oluşturulmadı "
- 16. iOS ana iş parçacığı birkaç saniye donuyor
- 17. Parse.enableLocalDatastore() - Uyarı: Ana iş parçacığı üzerinde
- 18. İki webapps arasında Ehcache paylaşımı
- 19. İş parçacığı yürütme sırasında nesne durum değişikliği
- 20. Python işlevini yürütme Ana iş parçacığında Kukla iş parçacığı içinde yürütme Kukla iş parçacığı
- 21. iPhone: İş parçacığının ana iş parçacığı nasıl belirlenir?
- 22. Diğer iş parçacıkları tamamlanıncaya kadar ana iş parçacığı nasıl engellenir?
- 23. Ana İş Parçacığı Denetimi: Bir arka plan iş parçacığı üzerinde UI API çağrısı: - [UIApplication temsilci]
- 24. İş parçacığı, iki iş parçacığı arasındaki iletişim C#
- 25. Bir sunucudan bir iş parçacığı oluşturabilir miyim?
- 26. Bir daemon iş parçacığı yalnızca
- 27. Bir iş parçacığı veya iş parçacığı için bir DAO DAO?
- 28. Onedrive İş için - Dosya paylaşımı
- 29. Django/sqlite3 "OperationalError: iş parçacığı yok" iş parçacığı üzerinde
- 30. Java'da main() yöntemi ve ana iş parçacığı arasındaki ilişki nedir?
Bazı kod snippet'lerini gösterebilir misiniz? – crypted
Başka herhangi bir nesne olarak iletebilirsiniz, ancak değiştirdiğinizde, threading modeli "STA" olduğundan bir istisna kaldırılacaktır. "Stackoverflow" üzerindeki farklı konulardan güvenli bir şekilde nasıl değiştirileceğini bulabilirsiniz. – Xaqron