


Bagaimana untuk Mengemas kini ProgressBar Secara Berterusan Menggunakan BackgroundWorker?
Jan 09, 2025 pm 06:57 PMMelaksanakan penggunaan benang pekerja latar belakang dengan betul untuk mengemas kini bar kemajuan
Latar belakang:
KelasBackgroundWorker
ialah komponen yang digunakan untuk melaksanakan tugasan yang berjalan lama di latar belakang sambil memastikan UI responsif. Ia membolehkan anda mengemas kini UI atau melakukan sebarang operasi lain yang perlu dilakukan pada urutan UI.
Soalan:
Seorang pengguna cuba melaksanakan BackgroundWorker
untuk mengemas kini bar kemajuan semasa tugasan yang sudah lama dijalankan. Walau bagaimanapun, animasi bar kemajuan tidak bermula sehingga urutan DoWork
selesai. Pengguna juga cuba menggunakan BackgroundWorker
lain untuk mengemas kini bar kemajuan, tetapi ia masih tidak berfungsi sehingga urutan BackgroundWorker
pertama DoWork
selesai.
Jawapan:
Untuk menggunakan BackgroundWorker
dengan betul untuk mengemas kini bar kemajuan, anda memerlukan:
-
Laksanakan BackgroundWorker dengan betul: Pastikan harta
BackgroundWorker
WorkerReportsProgress
ditetapkan kepadatrue
dan pengendali acaraProgressChanged
dilaksanakan untuk mengemas kini bar kemajuan. -
Panggil ReportProgress dalam kaedah DoWork: Dalam pengendali acara
BackgroundWorker
'sDoWork
, panggil kaedahReportProgress
pada selang masa yang sesuai untuk melaporkan kemajuan semasa tugasan. Ini akan mencetuskan acaraProgressChanged
dan mengemas kini bar kemajuan pada urutan UI. -
Kemas kini bar kemajuan pada urutan UI: Acara
ProgressChanged
dinaikkan pada urutan UI, jadi elemen UI boleh dikemas kini terus daripada pengendali acara ini. Di sini anda boleh mengemas kini atributValue
bar kemajuan untuk menggambarkan kemajuan yang dilaporkan.
Contoh kod:
Berikut ialah contoh kod ringkas yang menunjukkan cara menggunakan BackgroundWorker
untuk mengemas kini bar kemajuan:
// 用户控件代码隐藏 private void DoWork(object sender, DoWorkEventArgs e) { for (int i = 0; i <= 100; i++) { // 模拟长时间运行的工作 Thread.Sleep(100); backgroundWorker.ReportProgress(i); } } private void ProgressChanged(object sender, ProgressChangedEventArgs e) { // 当调用 ReportProgress 方法时,这会在 UI 线程上调用 progressBar.Value = e.ProgressPercentage; }
Atas ialah kandungan terperinci Bagaimana untuk Mengemas kini ProgressBar Secara Berterusan Menggunakan BackgroundWorker?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Langkah Format Fungsi Fungsi C Langkah Penukaran Kes

Gulc: Perpustakaan C dibina dari awal

Apakah jenis nilai yang dikembalikan oleh fungsi bahasa C? Apa yang menentukan nilai pulangan?

Bagaimana Perpustakaan Templat St Standard (STL) berfungsi?

Apakah definisi dan peraturan panggilan fungsi bahasa C dan apakah itu

Di manakah nilai pulangan fungsi bahasa C yang disimpan dalam ingatan?

Penggunaan dan perkongsian frasa yang berbeza

Bagaimanakah saya menggunakan algoritma dari STL (jenis, mencari, mengubah, dll) dengan cekap?
