C# window forms 進度條實現

在 C# Windows Forms 應用程序中,如果在后臺執行長時間運行的任務,并希望同時更新進度條,可以使用多線程來實現。這將確保進度條的更新不會阻塞主線程,從而保持界面的響應性。以下是一個示例,演示了如何在后臺執行任務并更新進度條。


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); // 模擬任務的延遲
? ? ? ? ? ? ? ? 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("任務完成!");
? ? ? ? }
? ? }
}
?

在這個示例中,使用了 `BackgroundWorker` 組件來在后臺執行任務并更新進度條。`BackgroundWorker` 組件允許使用事件來管理后臺工作的不同階段。

在 `Worker_DoWork` 方法中,執行模擬任務并使用 `worker.ReportProgress` 方法報告進度。在 `Worker_ProgressChanged` 方法中,我們更新進度條的值。最后,在 `Worker_RunWorkerCompleted` 方法中,啟用“開始”按鈕并顯示任務完成的消息。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/43418.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/43418.shtml
英文地址,請注明出處:http://en.pswp.cn/news/43418.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Datawhale 科大訊飛-基于論文摘要的文本分類與關鍵詞抽取挑戰賽】機器學習方法baseline

內容 科大訊飛AI開發者大賽NLP賽道題目&#xff1a; 基于論文摘要的文本分類與關鍵詞抽取挑戰賽 任務&#xff1a; 1.機器通過對論文摘要等信息的理解&#xff0c;判斷該論文是否屬于醫學領域的文獻。 2.提取出該論文關鍵詞。 數據集的獲取 訓練集&#xff1a; 這里讀取tit…

【基礎】Android Handler

一、博客參考 Handler機制詳解【重點】&#xff1a;https://www.jianshu.com/p/b4d745c7ff7a Handler Thread工作線程操作UI范例【重點】&#xff1a;https://www.cnblogs.com/net168/p/4075126.html 二、內存泄漏的解決&#xff1a;靜態內部類弱引用 關于 Handler&#xf…

vue+flask基于知識圖譜的抑郁癥問答系統

vueflask基于知識圖譜的抑郁癥問答系統 抑郁癥已經成為當今社會刻不容緩需要解決的問題&#xff0c;抑郁癥的危害主要有以下幾種&#xff1a;1.可導致病人情緒低落&#xff1a;抑郁癥的病人長期處于悲觀的狀態中&#xff0c;感覺不到快樂&#xff0c;總是高興不起來。2.可導致工…

智慧工地平臺工地人員管理系統 可視化大數據智能云平臺源碼

智慧工地概述&#xff1a; 智慧工地管理平臺是以物聯網、移動互聯網技術為基礎&#xff0c;充分應用大數據、人工智能、移動通訊、云計算等信息技術&#xff0c;利用前端信息采通過人機交互、感知、決策、執行和反饋等&#xff0c;實現對工程項目內人員、車輛、安全、設備、材…

elaticsearch(3)

整合springboot 1.整合依賴 注意依賴版本和安裝的版本一致 <properties> <java.version>1.8</java.version> <!-- 統一版本 --> <elasticsearch.version>7.6.1</elasticsearch.version> </properties> 導入elastics…

數據結構算法--1 順序查找二分查找

順序查找時間復雜度為O(n) 我們可以借助Python中的函數enumerate,通過enumerate遍歷列表返回其索引和值 def linnear_search(li, val):for ind, v in enumerate(li):if v val:return indelse:return None 也可以通過列表長度依次遍歷: def linear_search(li, val): # …

瀏覽器渲染原理 - 輸入url 回車后發生了什么

目錄 渲染時間點渲染流水線1&#xff0c;解析&#xff08;parse&#xff09;HTML1.1&#xff0c;DOM樹1.2&#xff0c;CSSOM樹1.3&#xff0c;解析時遇到 css 是怎么做的1.4&#xff0c;解析時遇到 js 是怎么做的 2&#xff0c;樣式計算 Recalculate style3&#xff0c;布局 la…

創建react native項目的筆記

創建react native項目的筆記 重新下載 ruby安裝 watchman安裝 cocoapods安裝 react native 項目創建好項目后安裝 ios 依賴清除設備緩存安裝 android 依賴鏈接 網易 mumu 模擬器安裝路由 Navigation頁面之間的跳轉邏輯自定義頭部樣式判斷不同設備平臺代碼示例安裝 Axios安裝本地…

java mysql druid mybatis-plus里使用多表刪除出錯的一種處理方式

今天在出來多表刪除的時候在mapper.xml用了下面的多個delete語句 <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"…

Spring Cloud 系列之OpenFeign:(7)鏈路追蹤zipkin

傳送門 Spring Cloud Alibaba系列之nacos&#xff1a;(1)安裝 Spring Cloud Alibaba系列之nacos&#xff1a;(2)單機模式支持mysql Spring Cloud Alibaba系列之nacos&#xff1a;(3)服務注冊發現 Spring Cloud 系列之OpenFeign&#xff1a;(4)集成OpenFeign Spring Cloud …

PHP酒店點菜管理系統mysql數據庫web結構apache計算機軟件工程網頁wamp

一、源碼特點 PHP 酒店點菜管理系統是一套完善的web設計系統&#xff0c;對理解php編程開發語言有幫助&#xff0c;系統具有完整的源代碼和數據庫&#xff0c;系統主要采用B/S模式開發。 代碼下載 https://download.csdn.net/download/qq_41221322/88232051 論文 https://…

前端技術Vue學習筆記--005

Vue學習筆記 一、非父子通信-event bus 事件總線 作用&#xff1a;非父子組件之間&#xff0c;進行簡易消息傳遞。&#xff08;復雜場景用----Vuex&#xff09; 使用步驟&#xff1a; 創建一個都能訪問的事件總線 &#xff08;空Vue實例&#xff09;-----utils/EventBus.js /…

兩個數組的交集-C語言/Java

描述 給定兩個數組 nums1 和 nums2 &#xff0c;返回 它們的交集 。輸出結果中的每個元素一定是 唯一 的。我們可以 不考慮輸出結果的順序。&#xff08;1 < nums1.length, nums2.length < 1000&#xff0c;0 < nums1[i], nums2[i] < 1000&#xff09; 示例1 輸入…

【golang】通道(channel)的基本原理(一)

通道類型的值本身就是并發安全的&#xff0c;這也是Go語言自帶的、唯一一個可以滿足并發安全性的類型。 聲明一個通道類型變量的時候&#xff0c;我們首先要確定該通道類型的元素類型&#xff0c;決定了我們可以通過這個通道傳遞什么類型的數據。 在初始化通道的時候&#xf…

一鍵批量修改文件夾名稱,中文瞬間變日語,輕松搞定重命名

大家好&#xff01;現在為了更好地適應全球化發展&#xff0c;許多人都有了海外交流、旅行、學習的需求。但是難免遇到一個問題&#xff1a;在電腦中的中文文件夾名稱如何快速翻譯成日語&#xff1f; 首先&#xff0c;第一步&#xff0c;我們需要打開文件批量改名&#xff0c;…

【Unity】編輯器下查找制定文件下的所有特定資源

需求上很簡單&#xff0c;就是在編輯器下&#xff0c;找到某個制定文件下的所有特定資源&#xff08;UnityEngine.Object&#xff09;。Unity 沒有提供專門的 API&#xff0c;我一開始想在網上搜索代碼&#xff0c;發現沒有現成可以直接用的。 功能實現本身并不復雜&#xff0c…

AWS EKS 集群自動擴容 Cluster Autoscaler

文章目錄 一&#xff0c;需求工作需求說明 二&#xff0c;部署精簡命令執行1&#xff0c;要求2&#xff0c;查看EC2 Auto Scaling groups Tag3&#xff0c;創建Serviceaccount需要的Policy&#xff0c;Role4&#xff0c;部署Cluster Autoscaler5&#xff0c;驗證6&#xff0c;常…

zotero在不同系統的安裝(win/linux)

1 window系統安裝 zotero 官網&#xff1a; https://www.zotero.org/ 官方文檔 &#xff1a;https://www.zotero.org/support/ (官方)推薦常用的插件: https://www.zotero.org/support/plugins 入門視頻推薦&#xff1a; Zotero 文獻管理與知識整理最佳實踐 點擊 exe文件自…

【環境配置】Windows 10 安裝 PyTorch 開發環境,以及驗證 YOLOv8

Windows 10 安裝 PyTorch 開發環境&#xff0c;以及驗證 YOLOv8 最近搞了一臺Windows機器&#xff0c;準備在上面安裝深度學習的開發環境&#xff0c;并搭建部署YOLOv8做訓練和測試使用&#xff1b; 環境&#xff1a; OS&#xff1a; Windows 10 顯卡&#xff1a; RTX 3090 安…