使用Timer
int num = 0;
System.Windows.Forms.Timer timer;
public void SetNum()
{
timer = new System.Windows.Forms.Timer();
timer.Interval = 1000;
timer.Tick += new EventHandler(timer_Tick);
timer.Start();
} void timer_Tick(object sender, EventArgs e)
{
label1.Text = num.ToString();
label1.Invalidate();
num++;
}
int num = 0;
System.Windows.Forms.Timer timer;
public void SetNum()
{
timer = new System.Windows.Forms.Timer();
timer.Interval = 1000;
timer.Tick += new EventHandler(timer_Tick);
timer.Start();
} void timer_Tick(object sender, EventArgs e)
{
label1.Text = num.ToString();
label1.Invalidate();
num++;
}
{
if (this.InvokeRequired)
{
Invoke(new delegateShowText(showText), new object[] { txt });
}
else
{ this.textBox1.Text = txt;
} }这里加一句
for(int i = 0; i <100;i++)
{
num++;
showTxt(num + "");
sleep(1000);
}
获取属性值
public class Class1
{
public delegate void ChangeNumber(int num);
public event ChangeNumber OnNumberChanged; private int num; public void Add()
{
for (int i = 0; i < 10; i++)
{
num++;
Thread.Sleep(1000);
if (OnNumberChanged != null)
{
OnNumberChanged(num);
}
}
}
}
private void button2_Click(object sender, EventArgs e)
{
Class1 c = new Class1();
c.OnNumberChanged += new Class1.ChangeNumber(c_OnNumberChanged);
Thread th = new Thread(new ThreadStart(c.Add));
th.IsBackground = true;
th.Start();
} void c_OnNumberChanged(int num)
{
if (textBox1.InvokeRequired)
{
textBox1.Invoke(new Class1.ChangeNumber(c_OnNumberChanged), new object[] { num});
}
else
{
textBox1.Text = num.ToString();
}
}
{
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
this.timer1.Enabled = true;
this.timer1.Interval = 1000;
} int z = 0; private void timer1_Tick(object sender, EventArgs e)
{
z ++;
if (z == 101)
{
this.timer1.Enabled = false;
}
else
{
this.textBox1.Text = z.ToString();
}
}
}
private void button1_Click(object sender, EventArgs e)
{
int num = 0;
for (int i = 0; i < 100; i++)
{
num++;
this.textBox1.Text = num.ToString();
System.Windows.Forms.Application.DoEvents();
System.Threading.Thread.Sleep(1000);
}
}
{
public delegate void MyEventHandler(int e);
public event MyEventHandler OnProChange; Thread th; public void Loop()
{
th = new Thread(new ThreadStart(M1));
th.Start();
} void M1()
{
for (int i = 0; i < 100; i++)
{
Thread.Sleep(1000);
if (OnProChange != null)
{
OnProChange(i);
}
}
}
}
Form上这样写 private void Form1_Load(object sender, EventArgs e)
{
Class1 cls = new Class1();
cls.OnProChange += new Class1.MyEventHandler(cls_OnProChange);
cls.Loop();
} void cls_OnProChange(int e)
{
CallBack(e);
} delegate void SetCallBack(int value);
void CallBack(int value)
{
if (this.InvokeRequired)
{
SetCallBack SCB = CallBack;
this.Invoke(SCB, new object[] { value });
}
else
{
textBox2.Text = value.ToString();
}
}
{
num++;
this.textbox1.text = num + "";
application.Doevnt();//加上这句就哦了
sleep(1000);//这句有没有都可以
}这个循环拷贝到Form里面
2,
delegate.BegineInvok()
delegate.EndInvok()
3,
线程上下文封送
4,
利用BackgroundWork