In my chatting program I've used an infinite loop for retrieving UDP packets and it is on a different thread.
Code:
private void WaitForPockets()
{
for (; ; )
{
try
{
byte[] data = client.Receive(ref receivePoint);
string receivedMessage = System.Text.Encoding.ASCII.GetString(data);
NewMessageEventArgs e = new NewMessageEventArgs(Environment.NewLine + receivedMessage);
//Raise event new message
OnNewMessage(e);
}
catch (Exception exc)
{
Logger.LogException(exc);
this.SetStatusBar("Error receiving message from " + Dns.GetHostEntry(receivePoint.Address.ToString()).HostName);
}
}
}
Code:
try
{
client = new UdpClient(_port);
receivePoint = new IPEndPoint(new IPAddress(0), 0);
Thread readThread = new Thread(new ThreadStart(this.WaitForPockets));
readThread.Start();
}
catch (Exception exc)
{
Logger.LogException(exc);
}