您的位置:首页 > 产品设计 > UI/UE

转: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...";
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: