您的位置:首页 > 其它

vs2005的form的委托 实现多线程操作richedit控件显示消息

2007-10-19 16:49 471 查看
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 WebSend
{
public partial class Form1 : Form
{

public string recvstr = null;
public Form1()
{
InitializeComponent();
}

//定义委托
delegate void AppendMessageCallback(string text);
private void AppendMessage(string text)
{
if (this.rtxtMessage.InvokeRequired)
{
AppendMessageCallback anc = new AppendMessageCallback(AppendMessage);
this.rtxtMessage.Invoke(anc, new object[] { text });
}
else
{
this.rtxtMessage.Text = text;
}
}

//定义委托
//线程
private void showRtxtMessage()
{
// for (int i = 0; i <= 1; i++)
//{
while (true)
{
try
{
recvstr = null;

System.Threading.Thread.Sleep(1000);
new Class1().show(this.rtxtMessage, recvstr.ToString());
}
catch
{
}
}

// }
} //线程
     //按钮事件
private void button1_Click(object sender, EventArgs e)
{

recvstr = "消息显示";
Thread ThreadMessage = new Thread(showRtxtMessage);
ThreadMessage.Start();

}

}

/////////////////委托类 textbox
public class Class1
{
public Class1()
{
}

public void show(RichTextBox tb1, string _num)
{
//tb1.Text = _num;
AppendMessage(tb1, _num);
}

delegate void AppendMessageCallback(object sender, string text);
private void AppendMessage(object sender, string text)
{
RichTextBox tb = sender as RichTextBox;
if (tb == null) return;
if (tb.InvokeRequired)
{
AppendMessageCallback anc = new AppendMessageCallback(AppendMessage);
tb.Invoke(anc, new object[] { sender, text });
}
else
{

tb.Text = text;// +"/r/n" + tb.Text;
}
}
}

//////////////////
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: