zoukankan      html  css  js  c++  java
  • 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 );
                }

            }

        }

    }
  • 相关阅读:
    css半透明边框
    css脱离文档流
    margin负值的作用
    浅谈BFC
    css多列布局
    css布局--水平垂直居中
    css布局--垂直居中
    css布局--水平居中
    题解-APIO2019奇怪装置
    题解-AtCoder ARC-078F Mole and Abandoned Mine
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6204947.html
Copyright © 2011-2022 走看看