在我的本地计算机上运行以下代码
Console.WriteLine("Loaded: " + records.Count);
Parallel.ForEach(records, record =>
{
try
{
var client = new HttpClient();
var response = client.SendAsync(new HttpRequestMessage(HttpMethod.Head, Http + record.DomainName)).Result;
if (!response.IsSuccessStatusCode || !response.RequestMessage.RequestUri.Host.EndsWith("domain.com"))
return;
var finalDomain = response.RequestMessage.RequestUri.Host.Replace(Www, null);
if (_resultsList.Add(finalDomain))
Console.WriteLine("Added: " + finalDomain);
}
catch (Exception)
{
// ignored
}
});
Console.WriteLine("Added: " + _resultsList.Count);
将以下内容写入控制台
Loaded: 3556
Added: 1550
但是当我上传它并将其作为Azure Webjob运行时,我得到的域名会更少。
Loaded: 3556
Added: 308
使用常规Parallel.ForEach()
替换foreach
会在两者上返回相同数量的域,但需要更长的时间。为什么Parallel.ForEach()
在Azure Webjobs上没有返回相同数量的结果,就像在我自己的机器上一样?
答案 0 :(得分:1)
有两种可能的原因,正如@usr所说的那样,如果你不忽视异常,你就会抓住。以下是两个可能的原因,最不可能的原因是