private void MyReceiveCallback(IAsyncResult result) { try { if (client != null) { IPEndPoint ip = new IPEndPoint(IPAddress.Any, 0); UdpClientEventArgs clientArgs = new UdpClientEventArgs(); clientArgs.Data = client.EndReceive(result, ref ip); clientArgs.Size = clientArgs.Data.Length; clientArgs.endPoint = ip; OnReceiveData(clientArgs); } if (!stop) { Receive(); // <-- this will be our loop } } catch (Exception MyReceiveCallbackExc) { // Удаленный хост принудительно разорвал существующее подключение if (MyReceiveCallbackExc.HResult == -2147467259) { LogError.MessageError(MyReceiveCallbackExc, null, "UDP соединение", false); return; } StopReceiving(); LogError.MessageError(MyReceiveCallbackExc, null, "UDP соединение", true); } }
protected virtual void OnReceiveData(UdpClientEventArgs e) { EventHandler <UdpClientEventArgs> handler = ReceiveData; if (handler != null) { handler(this, e); } }