使用委托及控件的invoke方法处理窗体控件的跨线程访问
2015-06-02 08:27
519 查看
namespace thread2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private Thread threadb;
delegate void setText(string s);
setText ST;
private void Form1_Load(object sender, EventArgs e)
{
label1.Text = "0";
ST = new setText(setLabelText);
}
private void setLabelText(string s)
{
label1.Text = s;
}
private void button1_Click(object sender, EventArgs e)
{
threadb = new Thread(new ThreadStart(runner));
threadb.Start();
}
private void runner()
{
for (int i = 0; i <= 100; i++)
{
label1.Invoke(ST, new object[]{i.ToString()});
Thread.Sleep(500);
}
}
private void thread2_FormClosing(object sender, FormClosingEventArgs e)
{
if (threadb.IsAlive)
threadb.Abort();
}
}
}
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private Thread threadb;
delegate void setText(string s);
setText ST;
private void Form1_Load(object sender, EventArgs e)
{
label1.Text = "0";
ST = new setText(setLabelText);
}
private void setLabelText(string s)
{
label1.Text = s;
}
private void button1_Click(object sender, EventArgs e)
{
threadb = new Thread(new ThreadStart(runner));
threadb.Start();
}
private void runner()
{
for (int i = 0; i <= 100; i++)
{
label1.Invoke(ST, new object[]{i.ToString()});
Thread.Sleep(500);
}
}
private void thread2_FormClosing(object sender, FormClosingEventArgs e)
{
if (threadb.IsAlive)
threadb.Abort();
}
}
}
相关文章推荐
- 回调函数(一)
- GLib-ERROR **: Creating pipes for GWakeup: Too many open files错误处理
- BeginWaitCursor()、EndWaitCursor()和RestoreWaitCursor()3个成员函数处理等待光标
- java的线程安全与不安全
- 关于排序算法的分析
- g++: internal compiler error: Killed (program cc1plus)
- ArrayList的初步了解
- IOS开发学习笔记036-UIScrollView-循环自动滚动
- 华丽的HTML5/jQuery动画和应用 前端必备
- Linux添加/删除用户和用户组
- WindowsForm 流
- gdb调试
- c++ 动态数组
- DevExpress GridView 添加和设置右键菜单
- DevExpress GridView 添加和设置右键菜单
- 栈 魔王语言解释
- 程序员编程生涯中经常会犯的7个错误
- Guard interval VS IFS (interframe space) 的区别
- kvm初体验之六:克隆
- Java知多少(80)图形界面设计基础