/// <summary> /// Resolve address /// </summary> static async Task <IEnumerable <DnsHostEntry> > ResolveAddressAsync(ProxySocketAddress addr, int period, bool cache) { Console.WriteLine($"Resolving {addr} for {period} ms..."); var entries = new HashSet <DnsHostEntry>(); var cts = new CancellationTokenSource(period); try { using (var resolver = await Dns.ResolveAsync(addr, cache, cts.Token)) { cts.Token.ThrowIfCancellationRequested(); while (await resolver.MoveNextAsync(cts.Token)) { cts.Token.ThrowIfCancellationRequested(); Console.WriteLine($"{DateTime.Now}: {resolver.Current}"); entries.Add(resolver.Current); } } } catch (OperationCanceledException) { } return(entries); }