读书人

socket聊天怎么将收到的信息更新到窗口

发布时间: 2012-04-22 18:34:46 作者: rapoo

socket聊天如何将收到的信息更新到窗口?
下面是我改的一部分接收用的代码,但是修改form中textbox的时候会线程不对,,,求助啊啊

Thread Listener = new Thread(new ThreadStart(ReceiveMsg));
Listener.Start();

接收信息的:
public void ReceiveMsg()
{
while (true)
{
lock (this)
{
IAsyncResult iar = udpReceive.BeginReceive(new AsyncCallback(ReceiveCallback), udpReceiveState);
receiveDone.WaitOne();
Thread.Sleep(100);
}
}
}

private void ReceiveCallback(IAsyncResult iar)
{
UdpState udpReceiveState = iar.AsyncState as UdpState;
if (iar.IsCompleted)
{
Byte[] receiveBytes = udpReceiveState.udpClient.EndReceive(iar, ref udpReceiveState.ipEndPoint);
receiveString = Encoding.ASCII.GetString(receiveBytes);
MessageBox.Show(receiveString);
AppendText(receiveString);《-----这里是修改textbox
receiveDone.Set();
}
}

[解决办法]

C# code
 private delegate void AppendTextToRichTextBoxDelegate(string message);        private void AppendTextToRichTextBox(string message)        {            if (rtxtReceive.InvokeRequired)            {                AppendTextToRichTextBoxDelegate d = new AppendTextToRichTextBoxDelegate(AppendTextToRichTextBox);                rtxtReceive.Invoke(d, message);            }            else            {                rtxtReceive.AppendText= message;            }        } 

读书人网 >C#

热点推荐