公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C#執行耗時進程時顯示動態等待效果實現

admin
2024年11月27日 18:47 本文熱度 345

在C#中,當執行耗時操作時,顯示一個動態等待效果(如一個旋轉的圖標或進度條)可以提升用戶體驗。以下是一個簡單的實現示例,使用 TaskCancellationToken, 和 ProgressBar 控件(或者你可以自定義任何動態效果控件)。

示例步驟:

  1. ?創建Windows Forms應用程序?

    • 使用Visual Studio創建一個新的Windows Forms應用程序。
  2. ?添加控件?

    • 在主窗體上添加一個 ProgressBar 控件(可以選擇添加一個 Label 控件來顯示文本信息)。
    • 你也可以自定義一個動態效果的控件,比如一個旋轉的圖標。
  3. ?編寫代碼?

    • 使用異步編程來執行耗時操作,并在UI線程中更新動態等待效果。

示例代碼:

以下是一個完整的示例代碼,演示了如何實現動態等待效果。

using System;

using System.Threading;

using System.Threading.Tasks;

using System.Windows.Forms;


namespace DynamicWaitingExample

{

    public partial class MainForm : Form

    {

        public MainForm()

        {

            InitializeComponent();

        }


        private async void btnStartTask_Click(object sender, EventArgs e)

        {

            // 初始化 ProgressBar

            progressBar1.Style = ProgressBarStyle.Marquee;

            progressBar1.MarqueeAnimationSpeed = 30; // 調整以更改動畫速度


            // 禁用按鈕以防止重復點擊

            btnStartTask.Enabled = false;


            // 執行耗時任務并等待完成

            await RunLongRunningTaskAsync();


            // 還原UI狀態

            progressBar1.Style = ProgressBarStyle.Blocks;

            progressBar1.MarqueeAnimationSpeed = 0;

            btnStartTask.Enabled = true;


            MessageBox.Show("任務完成!");

        }


        private async Task RunLongRunningTaskAsync()

        {

            // 使用 CancellationTokenSource 以便可以取消任務(可選)

            var cts = new CancellationTokenSource();


            try

            {

                // 模擬耗時任務

                await Task.Run(() =>

                {

                    for (int i = 0; i < 100; i++)

                    {

                        // 模擬工作的一部分

                        Thread.Sleep(50); // 模擬耗時操作


                        // 報告進度(可選,用于更新UI進度條)

                        // 這里進度條僅僅是示意,因為使用的是Marquee風格

                        this.Invoke(new Action(() =>

                        {

                            // 可以根據需要更新其他UI控件

                            // progressBar1.Value = i; // 僅對Blocks風格有效

                        }));


                        // 檢查是否請求取消

                        if (cts.Token.IsCancellationRequested)

                        {

                            cts.Token.ThrowIfCancellationRequested();

                        }

                    }

                }, cts.Token);

            }

            catch (OperationCanceledException)

            {

                // 任務取消處理(可選)

                MessageBox.Show("任務已取消。");

            }

            finally

            {

                // 清理資源

                cts.Dispose();

            }

        }


        // 初始化窗體控件

        private void InitializeComponent()

        {

            this.progressBar1 = new System.Windows.Forms.ProgressBar();

            this.btnStartTask = new System.Windows.Forms.Button();

            this.SuspendLayout();

            // 

            // progressBar1

            // 

            this.progressBar1.Location = new System.Drawing.Point(12, 12);

            this.progressBar1.Name = "progressBar1";

            this.progressBar1.Size = new System.Drawing.Size(358, 23);

            this.progressBar1.Style = System.Windows.Forms.ProgressBarStyle.Marquee;

            this.progressBar1.TabIndex = 0;

            // 

            // btnStartTask

            // 

            this.btnStartTask.Location = new System.Drawing.Point(158, 50);

            this.btnStartTask.Name = "btnStartTask";

            this.btnStartTask.Size = new System.Drawing.Size(75, 23);

            this.btnStartTask.TabIndex = 1;

            this.btnStartTask.Text = "開始任務";

            this.btnStartTask.UseVisualStyleBackColor = true;

            this.btnStartTask.Click += new System.EventHandler(this.btnStartTask_Click);

            // 

            // MainForm

            // 

            this.ClientSize = new System.Drawing.Size(382, 90);

            this.Controls.Add(this.btnStartTask);

            this.Controls.Add(this.progressBar1);

            this.Name = "MainForm";

            this.Text = "動態等待示例";

            this.ResumeLayout(false);

        }


        private System.Windows.Forms.ProgressBar progressBar1;

        private System.Windows.Forms.Button btnStartTask;

    }

}arp

關鍵點:

  1. ?異步編程?

    • 使用 async 和 await 關鍵字來避免阻塞UI線程。
    • 使用 Task.Run 將耗時操作放到后臺線程執行。
  2. ?UI更新?

    • 使用 this.Invoke 方法確保UI更新在UI線程中執行。
  3. ?取消支持?

    • 使用 CancellationTokenSource 以便在需要時可以取消任務。
  4. ?ProgressBar控件?

    • 使用 ProgressBarStyle.Marquee 實現動態效果。

通過以上步驟,你可以在C# Windows Forms應用程序中實現一個簡單的動態等待效果,使用戶在等待耗時操作時有良好的體驗。


該文章在 2024/11/27 18:47:17 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产黄片免费观看 | 国产在线观看精品 | 国产精品国产三级大全在线观看 | 国产午夜精品一区二区三区视频 | 国产精品爆乳奶水 | 国产成人亚洲精品无码a大片 | 国产萌白酱喷水在线播放尤物 | 国产中文字幕久久一区 | 国产一区二区伦理视频 | 东京热一区二区三区精品无码 | 国产精品三级在线观看 | 国色天香精品一卡二卡三卡 | 91成人午夜网站 | 国产成人欧美综合在线影院 | 国产精品无码不卡一区二区三区 | 精品麻豆一二三区 | 99久久久无码国产精品不卡 | 丰满人妻无码专区视频 | 国产草草影院一区二区三区 | 国产精品麻豆入口 | 国产在线成人一区二区 | 国产一级亚洲视频在线观看 | 国产人妻精品一区二 | 3p撑开菊眼h| 3d动漫精品啪啪一区二区 | 国产精品三级久久久久久电影 | 国产精品亚洲视频一区日韩 | 成av人片在线观黄桃 | 精品国产系列av在线 | 国产精品国产三级国产专播 | 18禁无遮挡羞羞污污污污网站 | 91在线无码精品秘入口竹美 | 国产品九九久久久国产精品 | 高清一区二区三区久久 | av天堂影音| av片在线观看永久免费 | 国产三级高清视频 | 国产女人高潮叫床视频大片 | 国产成人无码一区二区三区在线 | 国产精品一级二级在线观看 | 囯产目拍亚洲精品小草 |