日期:2014-05-20  浏览次数:20992 次

c# 窗口传递实时变化的值
FORM1有一个线程负责从一个JAVA程序中接收数据(利用了UDP套接字进行接收)代码如下
new Thread(() =>
{   
     while(true)
   {          
             byte[] data = new byte[10240];
             length=udpServer.ReceiveFrom(data,ref Remote);
            strData=Encoding.GetEncoding("GBK").GetString(data,0,length);
            Invoke(new ThreadStart(delegare()
           {
               textBox1.AppendText(strData+Environment.NewLine);
             }));
                            }
}).Start();
其中strData就是从java程序中接受到的数据,strData处于一直更新的状态,strData每接收到一条信息,通过invoke将strData在FORM1的textbox1里进行显示,AppendText是将新收到的信息另起一行进行添加,因此,可以看到所有接收到的信息。
同时FORM1里有一个button,每次点击button可以新建一个FORM2,FOMR2里也有一个textbox2。
我现在想做的就是点击两次FORM1里的button新建两个FORM2,让每个FORM2里的textbox2都能与FORM1里的textbox1同步显示strData。
我的想法是每次新建一个FORM2的同时新建一个线程,目的是想在两个FORM2里独立处理接收到的strData数据。
我写了一部分程序:
FORM1里定义:
FORM2 f2;

FORM1里的button:
privata void button(object sender, EventArgs e)
{
      f2=new Form2();
      f2.Show();
     Thread  t=new Thread(ShowData);
     t.Start();
}
 private void ShowData()
{
    ???
}
问题一:请问ShowDats这里应该怎么写才能将strData传给FORM2啊,如果是定值我知道怎么写,关键strData是会一直变化的!
还有就是
      f2=new Form2();
      f2.Show();
     Thread  t=new Thread(ShowData);
     t.Start();
问题二:这里没有实现新建一个FORM2就在新建的线程中独立处理strData,请问应该如何处理啊
求各位大神帮帮忙 谢谢了
------解决方案--------------------
http://bbs.csdn.net/topics/360140208