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:
BackgroundWorker
WorkerReportsProgress
ditetapkan kepada true
dan pengendali acara ProgressChanged
dilaksanakan untuk mengemas kini bar kemajuan. BackgroundWorker
's DoWork
, panggil kaedah ReportProgress
pada selang masa yang sesuai untuk melaporkan kemajuan semasa tugasan. Ini akan mencetuskan acara ProgressChanged
dan mengemas kini bar kemajuan pada urutan UI. ProgressChanged
dinaikkan pada urutan UI, jadi elemen UI boleh dikemas kini terus daripada pengendali acara ini. Di sini anda boleh mengemas kini atribut Value
bar kemajuan untuk menggambarkan kemajuan yang dilaporkan. Contoh kod:
Berikut ialah contoh kod ringkas yang menunjukkan cara menggunakan BackgroundWorker
untuk mengemas kini bar kemajuan:
<code class="language-csharp">// 用户控件代码隐藏 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; }</code>
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!