Kemas kini lengkap pada bar kemajuan WinForms
Apabila menggunakan bar kemajuan WinForms untuk memaparkan kemajuan pengiraan yang dilakukan dalam perpustakaan luaran, adalah penting untuk mencari cara yang cekap untuk mengemas kini bar kemajuan secara berperingkat.
Secara tradisinya, seperti yang ditunjukkan dalam contoh kod, kaedah PerformStep() bar kemajuan dipanggil selepas setiap pengiraan untuk menunjukkan langkah ke hadapan. Walau bagaimanapun, pendekatan ini tidak berfungsi apabila melakukan pengiraan dalam kaedah luaran.
Untuk menyelesaikan masalah ini, pertimbangkan untuk menggunakan kelas BackgroundWorker. Ia membolehkan anda melakukan tugas yang memakan masa di latar belakang sambil memastikan UI responsif.
Gunakan BackgroundWorker untuk mengemas kini bar kemajuan
Dengan menggunakan BackgroundWorker anda boleh memisahkan pengiraan daripada urutan UI. Berikut ialah contoh:
<code class="language-c#">private void Calculate(int i) { double pow = Math.Pow(i, i); } private void button1_Click(object sender, EventArgs e) { progressBar1.Maximum = 100; progressBar1.Step = 1; progressBar1.Value = 0; backgroundWorker.RunWorkerAsync(); } private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e) { var backgroundWorker = sender as BackgroundWorker; for (int j = 0; j < 100; j++) { Calculate(j); backgroundWorker.ReportProgress(j); } } private void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e) { progressBar1.Value = e.ProgressPercentage; }</code>
Dalam kod ini:
Pendekatan ini membolehkan anda melakukan pengiraan tanpa menyekat UI, memastikan pengalaman pengguna yang responsif sambil menyediakan kemas kini kemajuan melalui bar kemajuan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengemas Kini Bar Kemajuan WinForms Dengan Cekap Semasa Pengiraan Latar Belakang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!