我有一个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;
答案 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?