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;
}
}
}
//////////////////
}
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;
}
}
}
//////////////////
}
相关文章推荐
- (委托事件处理)关于多线程执行显示进度条的实例(转)&&线程间操作无效: 从不是创建控件“rtxtEntryNO”的线程访问它。
- Delphi中多线程用Synchronize实现VCL数据同步显示 解决在线程中操作控件出现问题
- 用委托来实现子窗体操作父窗体中的控件
- C#基于委托实现多线程之间操作的方法
- C#中利用委托实现多线程跨线程操作
- c++多线程读写窗体控件_自定义消息的实现
- Android 实现控件右上角显示消息数量气泡(badge)
- C#中利用委托实现多线程跨线程操作
- qt利用委托:QStyledItemDelegate,实现tableview 的表格项的自定义显示,如插入图片,绘制控件
- C#多线程操作控件的两种安全方式(委托方式和BackgroundWorker控件方式)
- winform 使用委托 实现多线程访问控件
- 用委托来实现子窗体操作父窗体中的控件
- 多线程中 用委托 操作 窗体的控件
- 关于多线程委托的控件操作
- C# :线程中操作多控件 (委托实现异步及同步的方法)
- c# 用委托实现多线程之间的操作
- C#中利用委托实现多线程跨线程操作
- C#中利用委托实现多线程跨线程操作
- Delphi使用IdTcp控件,在IdTCPServer1Connect事件中对未显示出的Form操作发生死锁
- 用委托在listbox中异步显示信息,解决线程间操作无效,从不是创建控件的线程访问它