Winform中进度条

   using System.Threading;//引入命名空间
    Thread thread = null;//其次声明一个线程对象
    public delegate void DelSetPro(int pros);//声明一个委托对象

    
///<summary>
    
/// 设置进度条内容
    
/// </summary>
    
/// <param name="pros">渐变的值</param>
    private void SetProContent(int pros)
    {
        
if (pros <= 100)
        {
            
//起初调用方位于创建控件所在的线程以外的的线程中,所以必须调用Invoke方法
            if (this.InvokeRequired)
            {
                DelSetPro delsetpro 
= new DelSetPro(SetProContent);
                
//在拥有控件的线程上,用指定的参数列表执行指定委托
                this.Invoke(delsetpro, new object[] { pros });
            }
            
else
            {
                
this.pBarLinking.Value = pros;
            }
        }
        
else
        {
            thread.Abort();
//终止线程
        }
    }
    
    
///// <summary>
    
/// 阻止当前线程
    
/// </summary>
    private void SleepThread()
    {
        
for (int i = 0; i < 500; i++)
        {
            Thread.Sleep(
100);
            
//修改进度条的前进速度,可修改[/]号后面的数字,数字越小,速度越快
            SetProContent(100 * i / 30);
        }
    }

    
//最后在窗体加载事件中或是按钮点击事件中启动线程
    thread = new Thread(new ThreadStart(SleepThread));
    thread.Start();
posted @ 2009-11-08 21:39  吴庆阳  阅读(2506)  评论(0编辑  收藏  举报