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