public string receivedata
        {
            get { return _receiveData; }
            set {
                         _receiveData = value; 
                         更新界面
                   }
        } _receiveData = "信息:" + iep.Address.ToString() + ":" + iep.Port.ToString() + "->" +
                    Encoding.GetEncoding(0).GetString(clientbyte);
->
 receiveData = "信息:" + iep.Address.ToString() + ":" + iep.Port.ToString() + "->" +
                    Encoding.GetEncoding(0).GetString(clientbyte);

解决方案 »

  1.   

    不行,还是不显示。我在WINFORM中引用这个DLL,代码如下:
    private void button5_Click(object sender, EventArgs e)//单击开始监听
            {
                Thread newthread = new Thread(listing);
                newthread.Start();

     private SocketNet.NetPortOperate npo;
     private void listing()
            {
                npo = new SocketNet.NetPortOperate();
                npo.IpAddress = IPAddress.Parse("192.168.1.233");
                npo.netPort = 55501;
                npo.OnReceiveDate();
                this.richTextBox4.AppendText(npo.receivedata);//要显示收到信息的控件RICHTEXTBOX4           
            }
    发送信息后无法显示在此控件中,通过另一个BUTTON单击查看npo.receivedata的值是有变化的。有什么好的解决办法?
      

  2.   

    方法就是自定义事件,在你的类中声明一个事件,form绑定,每次数据变化时,类里面触发这个时间就行了
    另外在线程中不要直接访问UI控件,通过委托invoke
      

  3.   

    类中已声明了事件ReceiveDate, FORM绑定是注册事件吗?(在类的初始化时实现注册的)在线程中使用INVOKE也无法显示数据。
    能否给实例代码看看。
    谢谢!!
      

  4.   

    给一个以前写的一个类似的示例的,public class SocketClient
        {
            private static Socket _client = null;
    //初始化client
    ...//委托
    public delegate void ParseData(string data);
    //事件
            public static event ParseData OnRecevieData;
    ....//开始接收数据
    public static void StartReceiveCommand()
            {
                Thread thread = new Thread(new ThreadStart(() =>
                {
                    while (true)
                    {
                        byte[] buffer = new byte[1024];
                        int count = _client.Receive(buffer, 0, buffer.Length, 0);
                        string data = Encoding.ASCII.GetString(buffer, 0, count);
                        ParseServerCommand(data);
                    }
                }));
                thread.IsBackground = true;
                thread.Start();
            }//解析数据
    private static void ParseServerCommand(string data)
            {//触发事件
                if (OnRecevieData != null)
                {
                    OnRecevieData(data);
                }
            }
    }Form里面的代码
    private void Form_Load(object sender, EventArgs e)
    {
    //绑定事件
    SocketClient.OnRecevieData += ParseCommand;
                SocketClient.StartReceiveCommand();
    }
    private void ParseCommand(string data)
    {
    //比如要显示数据到lableOutput上
     if (lableOutput.InvokeRequired)
                {
                    SetText s = (t) =>
                    {
                        lableOutput.Text = t;
                    };
                    lableOutput.Invoke(s, new object[] { text });
                }
                else
                {
                    lableOutput.Text = text;
                }
    }public delegate void SetText(string text);