Я думаю, что вы переживаете, это сочетание двух проблем. Первый из них заключается в том, что количество одновременных WebRequest
соединений ограничено 2 по умолчанию. Вы можете изменить это, создав класс, полученный из WebClient
, и переопределив метод GetWebRequest
следующим образом:
public class ExtendedWebClient : WebClient
{
/// <summary>
/// Gets or sets the maximum number of concurrent connections (default is 2).
/// </summary>
public int ConnectionLimit { get; set; }
/// <summary>
/// Creates a new instance of ExtendedWebClient.
/// </summary>
public ExtendedWebClient()
{
this.ConnectionLimit = 2;
}
/// <summary>
/// Creates the request for this client and sets connection defaults.
/// </summary>
protected override WebRequest GetWebRequest(Uri address)
{
var request = base.GetWebRequest(address) as HttpWebRequest;
if (request != null)
{
request.ServicePoint.ConnectionLimit = this.ConnectionLimit;
}
return request;
}
}
Вторая проблема, которую я вижу, заключается в том, что вы не закрываете / не располагаете Stream
, когда вы вызываете OpenRead
, так что оказалось бы, что эти два запроса не будут завершены до тех пор, пока сборщик мусора не решит использовать и не использовать эти потоки для вас.