频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

c#中子线程控制进度条的一个简单例子

来源:中国IT实验室 作者:佚名 出处:巧巧读书 2008-05-08 进入讨论组

    这个问题来自社区提问,代码保留一份用来以后回答

   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);
                }
            }
         }
    }

进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章