У меня есть клиент, который делает ограниченное количество из параллельных веб-запросов. Я использую WebClient с этой целью. У меня в настоящее время есть пул WebClient-s, который я создаю однажды и использование, какой бы ни каждый неактивен.
Этот подход становится немного громоздким, хотя, и я задаюсь вопросом, существует ли какое-либо преимущество для наличия набора предварительно созданных экземпляров WebClient, или если создание их на лету не было бы слишком большой проблемой?
Зачем вообще вам нужен пул веб-клиентов? Это крошечные дешевые предметы. Вы определили, измерив, что это необходимо и полезно? Я полагаю, что нет?
Создание экземпляров объекта почти всегда обходится дешево. HTTP-соединения тоже недороги. Пул WebClient - это преждевременная оптимизация. В этом нет необходимости - смело создавайте столько, сколько хотите.
Согласно Reflector, все, что делает конструктор WebClient, это следующее:
public WebClient()
{
this.m_Encoding = Encoding.Default;
this.m_ContentLength = -1L;
}
Так что нет, у вас нет особых преимуществ от наличия пула.
Если вы используете .NET 4.0, вы можете распараллелить веб-запросы. Проверьте это.
Но, отвечая на главный вопрос, я бы не стал хранить экземпляры WebClient в массиве, если нет необходимости повторно использовать этот экземпляр в других местах. В зависимости от цели и типа использования вы могли бы также иметь пул запросов со словарем строк.
И затем просто повторно использовать WebClient вместо того, чтобы иметь несколько экземпляров.