Если вы используете WebClient
, я бы каждый раз создавал новый. Я бы также использовал лямбда-выражение для события DownloadStringCompleted
, так как это позволит вам сохранить всю связанную логику вместе.
e.g.:
var wc = new WebClient();
wc.DownloadStringCompleted += (sender, e) => { GetServiceResources(); };
wc.DownloadStringAsync(new Uri("http://example.com/path", UriKind.Absolute));
Это должно облегчить чтение кода и, следовательно, его поддержку.
В том смысле, что ваш код smaple также имеет вложенные веб-запросы (завершенное событие запускает другой запрос) повторное использование того же клиента может затруднить отладку.
Обратите внимание, что WebClient
автоматически отправляет завершенное событие обратно в поток пользовательского интерфейса, поэтому любая выполняемая там работа блокирует этот поток пользовательского интерфейса. Если ваше завершенное событие делает что-то кроме простого обновления пользовательского интерфейса, рекомендуется использовать HttpWebRequest
вместо проблем производительности и удобства использования.
Я бы также рекомендовал не делать последовательные веб-запросы, если бы вы могли выполнять их параллельно или (что еще лучше) объединить логику (и ответ) в один запрос.