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   }