C# this.invoke()作用 多线程操作UI
来源:互联网 发布:淘宝卖书的利润 编辑:程序博客网 时间:2024/05/21 06:52
转自 : http://blog.sina.com.cn/s/blog_78806ae90101dlhc.html
Invoke()的作用是:在应用程序的主线程上执行指定的委托。一般应用:在辅助线程中修改UI线程(
[c-sharp] view plaincopy
- //测试的窗体
- public
class TestForm : Form - {
-
//创建一个Button对象 -
private Button newbutton = Button(); -
//构造函数 -
public TestForm() -
{ -
//设置按钮的属性 -
button.Size = new Size(150, //大小100); -
button.Click += Button1_Clicked; //注册事件 -
button.Text = "点击开始测试"; -
this.Controls.Add(button); -
this.Text = "多线程范例"; -
} -
//按钮的Click事件响应方法 -
public void Button1_Clicked( objectsender, EventArgs e) -
{ -
//启动一个线程 -
new Thread(ThreadProc).Start(); -
} -
//线程函数 -
public void ThreadProc() -
{ -
//this.Invoke就是跨线程访问ui的方法,也是本文的范例 -
//首先invoke一个匿名委托,将button对象禁用 -
this.Invoke((EventHandler)delegate -
{ -
button.Enabled = false; -
}); -
-
//记录一个时间戳,以演示倒计时效果 -
int tick = Environment.TickCount; -
while (Environment.TickCount - tick < 1000) -
{ -
//跨线程调用更新窗体上控件的属性,这里是更新这个按钮对象的Text属性 -
this.Invoke((EventHandler)delegate -
{ -
button.Text = (1000 - Environment.TickCount + tick).ToString() + "微秒后开始更新"; -
}); -
//做一个延迟,避免太快了,视觉效果不好。 -
Thread.Sleep(100); -
} -
//演示,10次数字递增显示 -
for ( inti = 0; i < 10; i++) -
{ -
this.Invoke((EventHandler)delegate -
{ -
button.Text = i.ToString(); -
}); -
Thread.Sleep(200); -
} -
//虽然不是循环内,请不要忘记,你的调用依然在辅助线程中,所以,还是需要invoke的。 -
//还原状态,设置按钮的文本为初始状态,设置按钮可用。 -
this.Invoke((EventHandler)delegate -
{ -
button.Text = "点击开始测试"; -
button.Enabled = true; -
}); -
} - }
0 0
- C# this.invoke()作用 多线程操作UI
- 多线程操作UI this.Invoke()
- C# this.Invoke()的作用与用法
- C# this.Invoke()的作用与用法
- C# this.Invoke()的作用与用法
- C# this.Invoke()的作用与用法
- C# this.Invoke()的作用与用法
- c#多线程操作UI控件
- C# 多线程间操作UI
- C#编程:多线程与UI操作
- C#编程:多线程与UI操作
- C# WinForm多线程---- Control.Invoke
- c#多线程以及Dispatcher.Invoke
- c#多线程(UI线程,控件显示更新) Invoke和BeginInvoke 区别
- c#多线程(UI线程,控件显示更新) Invoke和BeginInvoke 区别
- C#多线程编程(4)-多线程与UI操作
- C# 多线程操作界面时,使用Invoke与BeginInvoke的区别
- this.invoke
- Python 列表中存储类对象时按照指定属性进行排序——用于正排表的排序
- HUST1010——The Minimum Length(KMP)
- Java关键字final、static使用总结
- Metasploit 渗透测试笔记(Meterpreter篇)
- 3.30uitableview的知识点
- C# this.invoke()作用 多线程操作UI
- Maven打包自定义时间戳格式
- 《MySQL从入门到精通(视频教学版)》目录
- HDOJ 题目1043 Eight(单向BFS,康拓展开,打表)
- iOS的全局session
- What is an overlay?
- Nutch2.3 + Hbase 配置到爬行
- sql server 2008 r2 基础
- BOOL,float,指针变量与零值的比较