C# uygulamasının birkaç arka plan işçisi var. Bazen bir arka plan işçisi diğerini ateşleyecektir. İlk arka plan çalışanı tamamlandığında ve RunWorkerCompleted
olayı tetiklendiğinde, bu olay hangi yangında, UI veya RunWorkerAsync
'un çağrıldığı ilk arka plan çalışanı olarak adlandırılır? Microsoft Visual C# 2008 Express Edition kullanıyorum. Sahip olabileceğiniz herhangi bir düşünce ya da öneri takdir edilecektir. Teşekkürler.BackgroundWorker RunWorkerCompleted Event
cevap
UI dizisinden BackgroundWorker
oluşturulduysa, kullanıcı arabiriminde RunWorkerCompleted
olayı da yükseltilir.
Bir arka plan iş parçacığından oluşturulmuşsa, olay tanımsız bir arka plan iş parçacığında (özel bir SynchronizationContext
özel olarak kullanmadığınız sürece aynı iş parçacığına değil) yükseltilir.
İlginçtir, MSDN'de bu kadar iyi belgelenmiş gibi görünmüyor. Ben bulabildim iyi referans here oldu:
uygulamanızda çoklu uygulamak için tercih edilen bir yol BackgroundWorker bileşenini kullanmaktır. BackgroundWorker bileşeni, çoklu iş parçacığı için olay odaklı bir model kullanır. Arka plan iş parçacığı, DoWork olay işleyicinizi çalıştırır ve denetimlerinizi oluşturan iş parçacığı, ProgressChanged ve RunWorkerCompleted olay işleyicilerinizi çalıştırır. Denetimlerinizi ProgressChanged ve RunWorkerCompleted olay işleyicilerinizden arayabilirsiniz.
- 1. WPF/BackgroundWorker ve BitmapSource problemi
- 2. BackgroundWorker bileşeni hizmetlerde
- 3. BackgroundWorker için zaman aşımı
- 4. BackgroundWorker nesnesini nasıl döndürür
- 5. BackgroundWorker nasıl kullanılır?
- 6. Thread.Start() vs BackgroundWorker
- 7. C# backgroundworker döngü
- 8. BackgroundWorker ve System.Threadding.Thread arasındaki fark
- 9. javascript window unload event
- 10. RuntimeException: event @ otto
- 11. SetWinEventHook Window Maximized event
- 12. Event vs CustomEvent
- 13. event className çalışmıyor
- 14. handle event before Page_Load
- 15. Capture window close event
- 16. jQuery click() event catch-all?
- 17. selectionChanged event knockout'ta çalışmıyor js
- 18. INotifyDataErrorInfo ArgumentOutOfRangeException, hataları yükseltirChanged event
- 19. Bu BackgroundWorker şu anda meşgul ve ben iki kez backgroundworker başlar bir düğmeyi tıklarsanız aynı anda
- 20. BackgroundWorker iş parçacığı WinForms UI güncelleştirmesi
- 21. Silverlight MessageBox.SWCF hizmet çağrısını engelleyen BackgroundWorker
- 22. WPF'de BackgroundWorker ile Kullanıcı Arabirimini Güncelleme
- 23. BackgroundWorker uzun süreli çalışma için uygun mu?
- 24. BackgroundWorker - Çapraz iş parçacığı geçerli değil
- 25. BackgroundWorker raporu harici sınıftan mı geliyor?
- 26. , fare hareket olayını/dev/input/event *
- 27. text/event-stream İndirme olarak tanınan
- 28. Hointer özelliğini Pointer-event ile koru: none
- 29. scala event swing :: tavuk veya yumurta
- 30. Liste <string> INotifyPropertyChanged event
Bu denetimin başlatıldığı yer burası olur mu? Tüm arka plan işçilerim varsayılan InitializeComponent() 'işlevindeki UI iş parçacığından başlatılır (muhtemelen). –
@Jim: Evet, orijinalde biraz zayıf ifade; aslında olayları alacak olan BackgroundWorker'ı yaratan iş parçacığıdır ve aynı iş parçacığından “RunWorkerAsync” i çağırmalısınız. Akıl sağlığı amaçları için, bu genellikle UI iş parçacığı olmalıdır. – Aaronaught
Bu doğru değil. UI iş parçacığı BGW örneğini oluşturduysa, yalnızca UI iş parçacığında yükseltilir. Bir iş parçacığı BGW'yi oluşturduysa, o zaman rasgele bir threadpool iş parçacığı üzerinde yükseltilir. –