按时间限制Dns.GetHostAddresses

时间:2016-12-27 16:41:19

标签: c# system.net

我正在编写一个脚本,使用select extend(current,year to fraction(2)) from sysmaster:sysdual

解析域的IP地址

问题是我有很多域无法解析为IP,因此代码(C#)正在运行很长时间,试图为没有域的域解析IP知识产权。

这是代码:

Dns.GetHostAddresses

我想要做的是如果1秒后没有IP我想要返回“No IP”

我怎样才能实现这一目标?

1 个答案:

答案 0 :(得分:4)

您可以使用TPL(任务并行库)来实现此目的。您可以创建新任务并等待1秒,如果成功则返回true,否则返回false。 只需在getIPfromHost(string host)此方法中使用以下代码即可。 (这是您的问题的解决方案,需要等待1秒,请确保您之前的方法工作正常。)

public string getIPfromHost(string host)
        {
            try
            {
                Task<string> task = Task<string>.Factory.StartNew(() =>
                {
                     var domain = Dns.GetHostAddresses(host)[0];
                     return domain.ToString();
                });

            bool success = task.Wait(1000);
            if (success)
            {
                return task.Result;
            }
            else
            {
                return "No IP";
            }

            }
            catch (Exception)
            {

                return "No IP";
            }

        }