0

我有一个 ac# 应用程序,它读取大约 1500 个站点 url 的表格,这些客户自我们开始以来一直在公司工作。基本上,我正在对这些 url 运行 whois 查询,并查看它们是否仍然是客户端。该应用程序有效,但大约需要一个小时才能完成。使用异步 whois 查询会更好吗?大概可以节省多少时间。这是我正在使用的示例 whois 查询代码块。

另外,如果有人对如何改进此代码或运行异步命令有任何提示,请帮助我,因为我只是一名实习生。谢谢

string whoisServer = "whois.markmonitor.com";
    string data;
    try
    {
        TcpClient objTCPC = new TcpClient(whoisServer, 43);
        string strDomain = domainName + "\r\n";
        byte[] arrDomain = Encoding.ASCII.GetBytes(strDomain);

        Stream objStream = objTCPC.GetStream();
        objStream.Write(arrDomain, 0, strDomain.Length);
        StreamReader objSR = new StreamReader(objTCPC.GetStream(),
        Encoding.ASCII);
        //return objSR.ReadLine();
        //return (Regex.Replace(objSR.ReadToEnd(),"\n","<br>")).ToString();
        using (StreamReader reader = new StreamReader(objTCPC.GetStream(), Encoding.ASCII))
        {
            data = (reader.ReadToEnd());
        }
        //test.Add(objSR.ReadLine());
        objTCPC.Close();
    }
    catch
    {
        data = "Not Found";
    }
    return data;
4

1 回答 1

1

嗯,简短的回答肯定是肯定的。

由于您正在进行多个完全独立的查找,因此您可以通过并行、异步地运行它们来获得一切。

有几种方法可以做到这一点。选项取决于您使用的 .net 版本。

如您所料,有很多例子。
在 SO 上查看这些。

.Net 中可用的并行技术 .NET
多线程文件处理
何时使用 Parallel.ForEach 循环而不是常规 foreach?

于 2014-07-07T17:15:04.553 回答