1. 程式人生 > >c#中子執行緒控制進度條的一個簡單例子

c#中子執行緒控制進度條的一個簡單例子

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

        }

    }