using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace WindowsApplication19
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//声明事件委托
private delegate void delUpdate(string s);
void update(string s)
{
if (label1.InvokeRequired) // 当在其它线程中更新LABEL控件时,为true;否则为false
{
delUpdate du = new delUpdate(update);
//指定委托.程序运行到这里,会再执行一次update(),但
//label1.InvokeRequired值为false,相当如在主线程中执行更新动作
label1.Invoke(du, new object[] { s});
}
else
{
//在主线程中执行更新动作
label1.Text = s;
}
}
void refresh()
{
for (int i = 0; i < 10000; i++)
{
update(i.ToString());
}
thd.Abort();
thd = null;
}
Thread thd;
private void button1_Click(object sender, EventArgs e)
{
thd = new Thread(refresh);
thd.Start();
}
private void button2_Click(object sender, EventArgs e)
{
update("hello");
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace WindowsApplication19
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//声明事件委托
private delegate void delUpdate(string s);
void update(string s)
{
if (label1.InvokeRequired) // 当在其它线程中更新LABEL控件时,为true;否则为false
{
delUpdate du = new delUpdate(update);
//指定委托.程序运行到这里,会再执行一次update(),但
//label1.InvokeRequired值为false,相当如在主线程中执行更新动作
label1.Invoke(du, new object[] { s});
}
else
{
//在主线程中执行更新动作
label1.Text = s;
}
}
void refresh()
{
for (int i = 0; i < 10000; i++)
{
update(i.ToString());
}
thd.Abort();
thd = null;
}
Thread thd;
private void button1_Click(object sender, EventArgs e)
{
thd = new Thread(refresh);
thd.Start();
}
private void button2_Click(object sender, EventArgs e)
{
update("hello");
}
}
}