// 启动接受线程
Thread threadReceive = new Thread(ReceiveMessage);
threadReceive.Start();
// 接受消息方法
private void ReceiveMessage()
{
IPEndPoint remoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
while (true)
{
try
{
// 关闭receiveUdpClient时此时会产生异常
byte[] receiveBytes = receiveUdpClient.Receive(ref remoteIpEndPoint);
string receivemessage = Encoding.Unicode.GetString(receiveBytes);
// 显示消息内容
ShowMessage(lstMessageBox, string.Format("{0}[{1}]", remoteIpEndPoint, receivemessage));
ShowMessageInTextBox(tbReceive, receivemessage);
}
catch
{
break;
}
}
}
// 通过委托回调机制显示消息内容
delegate void ShowMessageInTextBoxCallBack(TextBox textbox,string text);
private void ShowMessageInTextBox(TextBox textbox, string text)
{
if (textbox.InvokeRequired)
{
ShowMessageInTextBoxCallBack showmessageCallback = ShowMessageInTextBox;
textbox.Invoke(showmessageCallback, new object[] { textbox, text });
}
else
{
textbox.Text = text;
}
}