我应该使用异步调用吗?

时间:2014-07-07 13:50:43

标签: database performance asynchronous whois network-efficiency

我有一个c#应用程序,它读取了自我们开始以来一直在公司工作的大约1500个网站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;

1 个答案:

答案 0 :(得分:1)

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

由于您正在进行多个完全独立的查找,因此可以通过并行异步运行来获取所有内容。

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

正如您所猜测的,有很多例子 请在SO上查看这些内容。

Avaliable parallel technologies in .Net
Multi threaded file processing with .NET
When to use a Parallel.ForEach loop instead of a regular foreach?