Silverlight 응용 프로그램에서 WebClient를 사용하여 REST 서비스에 액세스합니다. 알 수없는 양의 비동기 호출입니다. 멋진 점은 요청 및 응답을 주문할 수 있다는 것입니다. 응답은 요청에 일치합니다. 응답이 어떤 순서로 되돌아 올지 모르기 때문에 이것은 필요합니다.Silverlight WebClient 시간 초과를 설정하는 방법은 무엇입니까?
그러나 WebClient를 사용하여 전화를 걸려면 어떻게 "타임 아웃"을해야합니까? 수 15 초 말해 나는 WebClient/this 코드를 대리인/lambda와 함께 사용하고 싶습니다. WebRequest 클래스가있는 시간 제한 속성이 있지만 WebRequest로 WebClient를 바꿀 수 있지만 기능을 유지할 수 있는지 확실하지 않습니다.
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);
}
}
DispatcherTimer가 나에게 잘 어울립니다. – Gero
내가 잘못 본 것이 아니라면 시간 초과가 내장되어 있습니다 (메모리에서 약 30 초 정도의 시간이 걸립니다).이 방법은 더 짧은 시간 제한을 원할 경우 작동하지만 더 긴 시간 제한을 원할 경우 작동하지 않습니다. –
@Drew : 나는 당신이 잘못 생각한 것 같습니다. 서버에서 5 분 지연 테스트 BrowserHttp 또는 ClientHttp 스택 중 하나를 타임 아웃 할 수 없습니다. 물론 클라이언트와 서버상의 코드 사이에 모든 방식의 다른 장치가있을 수 있습니다.이 장치는 지연을 초래하여 개입하여 시간 초과를 초래할 수 있습니다. 그러나 Silverlight에는 기본 제공 시간 제한이 있거나 너무 크게 설정되어있는 것으로 나타나지 않습니다. 30 초는 약간 인색합니다. – AnthonyWJones