private void btnCleanNameserversKnowingNonExistingServer_Click(object sender, RoutedEventArgs e)
        {
            string nsToTest = tbNs.Text;

            ToggleNameServerGUIElements();
            BarbezDnsAccuracyChecker bdac = new BarbezDnsAccuracyChecker(sldWaitTimeBetweenDnsQuestions.Value, nsToTest);

            this.pbNameserverCleaner.Maximum = bdac.GetAmountOfNameServers();
            string serverToResolve = tbCleanNameserversThatKnowNonExistingDomain.Text;

            this.dnsTesterThread = new Thread(() =>
            {
                DelegateTestReporter dtr = new DelegateTestReporter(KeepNsNotKnowingNonExistingDomainName);
                bool success             = bdac.PerformTestAsync(serverToResolve, dtr);

                Dispatcher.Invoke((Action)(() =>
                {
                    if (!success)
                    {
                        MessageBox.Show("Please only use correct IP addresses. Verify your input, then try again." + Environment.NewLine + "You can seperate IP adresses using a new line or a comma.",
                                        "Error", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                    ToggleNameServerGUIElements();
                }));
            });
            this.dnsTesterThread.Start();
        }
        internal bool PerformTestAsync(string serverToResolve, DelegateTestReporter dtr)
        {
            try
            {
                this.dtr      = dtr;
                this.callBack = new AsyncCallback(ProcessTestAnswersOfDnsAsync);

                foreach (string ns in this.lns)
                {
                    DnsClient.RequestOptions ro = new DnsClient.RequestOptions();
                    IPAddress result            = IPAddress.Loopback;
                    IPAddress.TryParse(ns, out result);


                    if (result == null)
                    {
                        result = IPAddress.Loopback;
                    }

                    ro.DnsServers = new IPAddress[] { result };

                    DnsRequest dnsRequest = new DnsRequest();
                    dnsRequest.DnsServerIP = ro.DnsServers;
                    dnsRequest.Url         = serverToResolve;

                    Thread.Sleep(Int32.Parse(Math.Ceiling(this.WaitTimeBetweenQueryingDns).ToString()));
                    DnsClient.BeginLookupHost(serverToResolve, DnsClient.IPVersion.IPv4, ro, callBack, dnsRequest);
                }
                return(true);
            }
            catch
            {
                return(false);
            }
        }