gpt4 book ai didi

silverlight - 如何在 Silverlight WebClient 中设置超时?

转载 作者:行者123 更新时间:2023-12-04 06:10:32 24 4
gpt4 key购买 nike

我在 Silverlight 应用程序中使用 WebClient 来访问 REST 服务。它的异步调用数量未知。
很酷的是,您可以订购您的请求和回复!响应与他们的请求相匹配!这是必要的,因为您不知道响应将以什么顺序返回。

但是如何通过 WebClient 获得“超时”?假设 15 秒
我想有点坚持 WebClient/this code with delegates/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);
}
}

最佳答案

WebRequest也不提供管理请求超时的方法。

您需要采取的方法是使用 WebClient结合您自己的基于 DispatcherTimer 的代码这将调用 WebClient CancelAsync方法。

关于silverlight - 如何在 Silverlight WebClient 中设置超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7836841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com