程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> c#中子線程控制進度條的一個簡單例子

c#中子線程控制進度條的一個簡單例子

編輯:關於C#

這個問題來自社區提問,代碼保留一份用來以後回答

using System;
using System.ComponentModel;
using System.Windows.Forms;
namespace WindowsApplication4
...{
  /**//// <summary>
  /// gui 類
  /// </summary>
  public partial class Form1 : Form
  ...{
    public Form1()
    ...{
      InitializeComponent();
    }
    private void button1_Click(object sender, EventArgs e)
    ...{
      //用子線程工作
      new System.Threading.Thread(new System.Threading.ThreadStart(StartDownload)).Start();
    }
    //開始下載
    public void StartDownload()
    ...{
      Downloader downloader = new Downloader();
      downloader.onDownLoadProgress += new Downloader.dDownloadProgress(downloader_onDownLoadProgress);
      downloader.Start();
    }
    //同步更新ui
    void downloader_onDownLoadProgress(long total, long current)
    ...{
      if (this.InvokeRequired)
      ...{
        this.Invoke(new Downloader.dDownloadProgress(downloader_onDownLoadProgress), new object[] ...{ total, current });
      }
      else
      ...{
        this.progressBar1.Maximum = (int)total;
        this.progressBar1.Value = (int)current;
      }
    }
  }

  /**//// <summary>
  /// 下載類
  /// </summary>
  public class Downloader
  ...{
    //委托
    public delegate void dDownloadProgress(long total,long current);
    //事件
    public event dDownloadProgress onDownLoadProgress;
    //開始模擬工作
    public void Start()
    ...{
      for (int i = 0; i < 100; i++)
      ...{
        if (onDownLoadProgress != null)
          onDownLoadProgress(100, i);
        System.Threading.Thread.Sleep(100);
      }
    }
  }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved