Bunun 3 yöntemi olduğunu biliyorum. Programımda bir mesaj göndermek için bir yöntem var. Genellikle geç kalır ve program bazen bir tuşa basma mesajını hiç göndermez. Zaman zaman beklediğimden 5 saniye kadar geç ve program donuyor. İletiyi beklendiği gibi göndermek ve programın her zaman normal şekilde çalışmasına izin vermek için BackgroundWorker
kullanmak istiyorum. İletiyi bir düğme işleyicisine göndermek için kodum vardı. Şimdi bu eşdeğer kodu nereye koyacağım? Tüm bunların hala bir düğmeye basılarak ele alınmasını istiyorum.BackgroundWorker nasıl kullanılır?
Bu uygun işleyici mi?
backgroundWorker1.RunWorkerAsync();
ve :
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) {}
Ben düğme işleyicisi içinde kodumu koyacağım? Ve bundan önce: ProgressBar olduğu
carga.progressBar1.Minimum = 0;
carga.progressBar1.Maximum = 100;
Carga benim diğer şeklidir. Bu senaryoda bir BackgroundWorker'ı nasıl kullanırım?
Yukarıdaki çözüm Alex Aza tarafından verilen kodun üstüne eklemek için örnek gidiyorum - nasıl geri ana (UI) için arka plan işçi dönen veri almak do ipliği? –
Tek, UI (WPF ilerleme çubuğu) ProgressChanged yönteminden güncelleştirme hakkında bir özel durum var. Ayrıca, https://stackoverflow.com/questions/9732709/the-calling-thread-cannot-access-this-object-because-a-different-thread-owns-it/43455920 benimkine benzer bir sorunu var gibi görünüyor, ve Application.Current.Dispatcher.Invoke() 'için gerekliliğini belirtmektedir. Bunun hakkında bir fikrin var mı? –