Вот что я сделал до сих пор:Silverlight - Подождите асинхронной задачи для завершения
Все ниже кода будет получать петельные через и разные URL, будет отправлен каждый раз. Я хочу, чтобы иметь возможность вызывать адрес в цикле, а затем ждать его завершения, а затем вызвать завершенный метод.
Я создал свой URI
Uri address = new Uri("http://dev.virtualearth.net/REST/V1/Imagery/Metadata/OrdnanceSurvey/" + latitude + "," + longitude + "?+zl=" + zoomLevel + "&key=""");
Я тогда сказал ему, где позвонить, когда операция имеет полный
WebClient webClient = new WebClient();
webClient.DownloadStringCompleted += WebClientDownloadString_Complete;
webClient.DownloadStringAsync(address);
Тогда я установить, что произойдет, когда завершена работа
private void WebClientDownloadString_Complete(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
{
string html = e.Result;
string[] parts = html.Split(',');
string[] URLs = parts[7].Split('"');
URL = URLs[3].Replace("{subdomain}", "t0").Replace("{quadkey}", qk.Key).Replace(@"\", string.Empty);
}
}
Есть ли способ, которым, когда веб-клиент вызывает URL-адрес, я жду, пока операция не завершится, и вызовет завершенный метод?
Хороший метод, но 'TaskCompletionSource' немного лучше (и не блокирует вызывающий поток) – BradleyDotNET
я думаю, если он может использовать DownloadFileTaskAsync он мог бы сделать это еще лучше;) –