VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Objective-C编程 >
  • C#子进程控制进度条一个简单例子

制作者:剑锋冷月 单位:无忧统计网,www.51stat.net
  这个问题来自社区提问,代码保留一份用来以后回答
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);
      }
    }
  }
}
 


相关教程