Я использую WebClient в приложении Silverlight для доступа к службам REST.Это неизвестное количество асинхронных вызовов.Самое классное, вы можете заказать ваши запросы и ответы!ответы соответствуют их запросам!Это необходимо, поскольку вы не знаете, в каком порядке будут возвращаться ответы.
Но как мне получить «тайм-аут» для моих звонков с WebClient?скажем, 15 сек. Я бы хотел придерживаться WebClient / этого кода с делегатами / lambda.Я знаю, что есть свойство timeout с классом WebRequest, но я не уверен, можно ли просто заменить WebClient на WebRequest, но сохранить функциональность.
int maxRequests = list_S.Count;
// amount of URI
foreach (string item in list_S)
{
bool isValid = Uri.IsWellFormedUriString(item, UriKind.Absolute);
Uri uriTest;
if(isValid) //if it is valid Uri, send request
{
WebClient wc = new WebClient();
wc.DownloadStringCompleted += (s, args) =>
{
if (args.Error == null)
{
dict.Add((int)args.UserState, args.Result);
}
//here you test if it is the last request... if it is, you can
//order the list and use it as you want
if (dict.Count == maxRequests)
{
var orderedResults = dict.OrderBy(a => a.Key);
}
closeTabitem_SensorSource();
};
wc.DownloadStringAsync(new Uri(item), i++);
}
else
{
MessageBox.Show("Uri FAIL!: " + item);
}
}