C# 如果何从线程中操作控件
下面是比较早期写的一个监控UDP接收的线例子:
1
//申明委托
2
public delegate void mydelegate();
3
//添加调用控制的方法
4
public void outtext()
5
{
6
textBox1.Text = Read_str;
7
8
}
9
public void start_server()
10
{
11
while (true)
12
{
13
//接收从远程主机发送到本地8090端口的数据
14
byte[] recData = server.Receive(ref receivePoint);
15
ASCIIEncoding encode = new ASCIIEncoding();
16
//获得客户端请求数据
17
Read_str = encode.GetString(recData);
18
//提取客户端的信息,存放到定义为temp的字符串数组中
19
//string[] temp = Read_str.Split("/".ToCharArray());
20
//在线程中调用对象;
21
mydelegate mydelegate = new mydelegate( outtext );
22
//BeginInvoke/invoke(同步或异步) 方法来将调用封送到适当的线程
23
textBox1.BeginInvoke(mydelegate, new object[] { });
24
25
}
26
}
27
public void run()
28
{
29
//利用本地8080端口号来初始化一个UDP网络服务
30
server = new UdpClient(port);
31
receivePoint = new IPEndPoint(new IPAddress(ip), port);
32
//开一个线程
33
startServer = new Thread(new ThreadStart(start_server));
34
//启动线程
35
startServer.Start();
36
37
}
38
private void Form1_Load(object sender, EventArgs e)
39
{
40
//启动对时服务
41
run();
42
43
}
//申明委托2
public delegate void mydelegate();3
//添加调用控制的方法4
public void outtext() 5
{6
textBox1.Text = Read_str;7
8
} 9
public void start_server()10
{11
while (true)12
{13
//接收从远程主机发送到本地8090端口的数据14
byte[] recData = server.Receive(ref receivePoint);15
ASCIIEncoding encode = new ASCIIEncoding();16
//获得客户端请求数据17
Read_str = encode.GetString(recData);18
//提取客户端的信息,存放到定义为temp的字符串数组中19
//string[] temp = Read_str.Split("/".ToCharArray());20
//在线程中调用对象;21
mydelegate mydelegate = new mydelegate( outtext );22
//BeginInvoke/invoke(同步或异步) 方法来将调用封送到适当的线程23
textBox1.BeginInvoke(mydelegate, new object[] { });24
25
}26
}27
public void run()28
{29
//利用本地8080端口号来初始化一个UDP网络服务30
server = new UdpClient(port);31
receivePoint = new IPEndPoint(new IPAddress(ip), port);32
//开一个线程33
startServer = new Thread(new ThreadStart(start_server));34
//启动线程35
startServer.Start();36
37
}38
private void Form1_Load(object sender, EventArgs e)39
{40
//启动对时服务41
run();42
43
}参考文章:
作者:Neo.Yan
出处:http://www.cnblogs.com/Nick4/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
欢迎大家访问我的网站-RedGlove.NET。

浙公网安备 33010602011771号