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

         }
 

     }
 

 }
posted @   星火燎猿*  阅读(42)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
· 面试官:你是如何进行SQL调优的?
点击右上角即可分享
微信分享提示