Naturally, BeginReceive() will never end if there\'s no data. MSDN suggests that calling Close() would abort BeginReceive().
BeginReceive()
Close()
You can read my solution of this problem here(using comment of Pavel Radzivilovsky here): UdpClient.ReceiveAsync correct early termination