public void Done(DtlsOverUdp DtlsOverUdp, bool Successful) { Tuple <byte[], UdpTransmissionEventHandler, object> Rec; do { lock (this.Queue) { if (this.Queue.First != null) { Rec = this.Queue.First.Value; this.Queue.RemoveFirst(); } else { Rec = null; } } if (Rec != null) { if (Successful) { DtlsOverUdp.DTLS.SendApplicationData(Rec.Item1, this.RemoteEndpoint); } if (Rec.Item2 != null) { try { Rec.Item2(this, new UdpTransmissionEventArgs(DtlsOverUdp, this.RemoteEndpoint, Successful, Rec.Item3)); } catch (Exception ex) { Log.Critical(ex); } } } }while (Rec != null); }