在 C# Windows Forms 應(yīng)用程序中,如果在后臺執(zhí)行長時(shí)間運(yùn)行的任務(wù),并希望同時(shí)更新進(jìn)度條,可以使用多線程來實(shí)現(xiàn)。這將確保進(jìn)度條的更新不會(huì)阻塞主線程,從而保持界面的響應(yīng)性。以下是一個(gè)示例,演示了如何在后臺執(zhí)行任務(wù)并更新進(jìn)度條。
using System;
using System.ComponentModel;
using System.Threading;
using System.Windows.Forms;
namespace BackgroundWorkerExample
{
? ? public partial class MainForm : Form
? ? {
? ? ? ? private BackgroundWorker worker;
? ? ? ? public MainForm()
? ? ? ? {
? ? ? ? ? ? InitializeComponent();
? ? ? ? ? ? worker = new BackgroundWorker();
? ? ? ? ? ? worker.WorkerReportsProgress = true;
? ? ? ? ? ? worker.DoWork += Worker_DoWork;
? ? ? ? ? ? worker.ProgressChanged += Worker_ProgressChanged;
? ? ? ? ? ? worker.RunWorkerCompleted += Worker_RunWorkerCompleted;
? ? ? ? }
? ? ? ? private void StartButton_Click(object sender, EventArgs e)
? ? ? ? {
? ? ? ? ? ? if (!worker.IsBusy)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? worker.RunWorkerAsync();
? ? ? ? ? ? ? ? StartButton.Enabled = false;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? private void Worker_DoWork(object sender, DoWorkEventArgs e)
? ? ? ? {
? ? ? ? ? ? for (int i = 0; i <= 100; i++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? Thread.Sleep(50); // 模擬任務(wù)的延遲
? ? ? ? ? ? ? ? worker.ReportProgress(i);
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? private void Worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
? ? ? ? {
? ? ? ? ? ? progressBar1.Value = e.ProgressPercentage;
? ? ? ? }
? ? ? ? private void Worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
? ? ? ? {
? ? ? ? ? ? StartButton.Enabled = true;
? ? ? ? ? ? MessageBox.Show("任務(wù)完成!");
? ? ? ? }
? ? }
}
?
在這個(gè)示例中,使用了 `BackgroundWorker` 組件來在后臺執(zhí)行任務(wù)并更新進(jìn)度條。`BackgroundWorker` 組件允許使用事件來管理后臺工作的不同階段。文章來源:http://www.zghlxwxcb.cn/news/detail-652489.html
在 `Worker_DoWork` 方法中,執(zhí)行模擬任務(wù)并使用 `worker.ReportProgress` 方法報(bào)告進(jìn)度。在 `Worker_ProgressChanged` 方法中,我們更新進(jìn)度條的值。最后,在 `Worker_RunWorkerCompleted` 方法中,啟用“開始”按鈕并顯示任務(wù)完成的消息。文章來源地址http://www.zghlxwxcb.cn/news/detail-652489.html
到了這里,關(guān)于C# window forms 進(jìn)度條實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!