Лично я бы использовал класс BackgroundWorker для отправки данных.
Пользовательский интерфейс не зависнет, и сообщение будет отправлено в фоновом режиме.
Просто добавьте BackgroundWorker из toolbox
В вашем случае это будет примерно так:
private void Send_btn_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, EventArgs e)
{
Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPAddress serverAddr = IPAddress.Parse("192.168.1.15");
IPEndPoint endPoint = new IPEndPoint(serverAddr, 5000);
string text = "Sample text";
byte[] send_buffer = Encoding.ASCII.GetBytes(text);
sock.SendTo(send_buffer, endPoint);
}
Ваш класс Designer будет иметь что-то вроде этого:
this.backgroundWorker1.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker1_DoWork);
Если вам нужен уведомление или что-то в этом роде, вы можете просто обработать событие RunWorkerCompleted.