public void Send(IcmpEchoSender.SendEchoInfo info, Action <IList <SendResult <IcmpEchoResponseDatagram> > > finished) { IPEndPoint endPoint = null; var finishedResult = new List <SendResult <IcmpEchoResponseDatagram> >(); var senderImpl = new IcmpTracertSenderImpl(); var lastTtl = 1; var manualResetevent = new ManualResetEvent(false); while (endPoint == null || endPoint.Address != info.IpAddress) { senderImpl.Send(new SendTracertInfo(info, lastTtl++), result => { endPoint = result.EndPoint as IPEndPoint; finishedResult.Add(result); manualResetevent.Set(); }); info.IncreaseSequence(); manualResetevent.WaitOne(); manualResetevent.Reset(); } senderImpl.CloseHost(); finished(finishedResult); }
public void Send(IcmpEchoSender.SendEchoInfo info, Action<IList<SendResult<IcmpEchoResponseDatagram>>> finished) { IPEndPoint endPoint = null; var finishedResult = new List<SendResult<IcmpEchoResponseDatagram>>(); var senderImpl = new IcmpTracertSenderImpl(); var lastTtl = 1; var manualResetevent = new ManualResetEvent(false); while (endPoint == null || endPoint.Address != info.IpAddress) { senderImpl.Send(new SendTracertInfo(info, lastTtl++), result => { endPoint = result.EndPoint as IPEndPoint; finishedResult.Add(result); manualResetevent.Set(); }); info.IncreaseSequence(); manualResetevent.WaitOne(); manualResetevent.Reset(); } senderImpl.CloseHost(); finished(finishedResult); }