转:C# 通过委托更新UI(异步加载)
2015-02-23 12:41
316 查看
来自:http://blog.csdn.net/gongzhe2011/article/details/27351853 using System.Windows.Forms; using System.Threading; using System; namespace Threaddemo1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } delegate void aa(string s);//创建一个代理 private void Form1_Load(object sender, EventArgs e) { Thread newthread = new Thread(new ThreadStart(ttread)); newthread.Start(); } void ttread() { pri("77"); } private delegate void ProgressBarShow(int i); private void pri(string p) { bool name = richTextBox1.InvokeRequired; //MessageBox.Show(name.ToString()); if (!richTextBox1.InvokeRequired)//判断是否需要进行唤醒的请求,如果控件与主线程在一个线程内,可以写成if(!InvokeRequired) { Loadthread(); } else { // MessageBox.Show("不是同一个线程"); aa a1 = new aa(pri); Invoke(a1, new object[] { p });//执行唤醒操作 } } private void Loadthread() { string s = string.Empty; for (int b = 0; b < 10000; b++) { this.ShowPro(b); s += b.ToString(); } //MessageBox.Show("同一线程内"); LoadRichebox(s); } void send() { Thread.CurrentThread.Abort(); } private void LoadRichebox(string s) { richTextBox1.Text = s; } private void ShowPro(int value) { if (this.InvokeRequired) { this.Invoke(new ProgressBarShow(ShowPro), value); } else { this.progressBar1.Value = value; this.label1.Text = value + "% Processing..."; } } } }
相关文章推荐
- C# 异步线程加载数据 更新UI
- c#,jquery easy ui通过ajax实现异步加载tree
- !!c# 委托与多线程 -- 相比background来说,本方法针对当需要通过异步代理发起UI操作,而后线程中进行sleep操作的时使用
- Handler相关------方法,更新UI,异步,解决数据加载量等
- C#利用委托跨线程更新UI数据
- C# 通过委托控制进度条以及多线程更新控件
- c#异步读取数据库与异步更新ui的代码实现
- C# 通过委托+异步的方式约束函数的执行超时时间
- c# 多线程异步更新UI
- Android 通过广播来异步更新UI
- c#中Winform实现多线程异步更新UI(进度及状态信息)
- C# 通过委托控制进度条以及多线程更新控件
- c# Winform UI异步委托
- C# 通过委托控制进度条以及多线程更新控件
- c#利用委托进行异步跨线程加载到窗体数据
- C#利用委托跨线程更新UI数据
- C# 通过PostMessage完成UI的更新
- C#利用委托跨线程更新UI数据
- C#.NET dll封装(包含UI和实现函数),通过反射调用dll实现控件的快速加载(PrimPointListCreator.cs)
- c#非委托方式在子线程里操作UI控件(实际上运算逻辑在子线程,更新还是在主线程,解决了UI界面无响应的问题)