public partial class Form1 : Form
{
private delegate void InvokeCallback(int pos); //定义回调函数(代理)格式
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Thread curThread = new Thread(DoParse);
this.progressBar1.Visible = true;
curThread.Start(this);
}
private void DoParse(object obj)
{
ParseAdjust p = new ParseAdjust();
p.Parse(obj);
}
//Invoke回调函数
public void UpdateProcessBar(int pos)
{
if (progressBar1.InvokeRequired)
{
progressBar1.Invoke(new InvokeCallback(UpdateProcessBar), new object[] { pos });//回调
}
else//当前线程是创建线程(界面线程)
{
progressBar1.Value = pos;//直接更新
}
}
}
================================
public class ParseAdjust
{
public ParseAdjust()
{
}
public bool Parse(object obj)
{
Form1 f = (Form1)obj;
f.UpdateProcessBar(20);
Thread.Sleep(3000);
f.UpdateProcessBar(60);
Thread.Sleep(2000);
f.UpdateProcessBar(100);
return false;
}
}