我有一个要移植到 Windows 8 Store 类库的类库。其中一种方法使用现在不支持的同步 HttpWebRequest。我需要保持方法同步,因为异步工作已经在应用程序而不是库中完成,并且更改它需要大量的努力。我已将其更改为使用 IAsyncresult 的同步任务,但我不确定如何使用此代码设置请求超时。有人可以帮忙吗?任何人都可以看到我在使用此代码时可能遇到的任何其他问题吗?
//Create Web Request
HttpWebRequest request = WebRequest.Create(uri) as HttpWebRequest;
IAsyncResult asyncResult = request.BeginGetResponse(null, null);
if (asyncResult.AsyncWaitHandle.WaitOne(5 * 1000))
{
//Get Response
using (HttpWebResponse response = request.EndGetResponse(asyncResult) as HttpWebResponse)
{
if (request.HaveResponse && response != null)
{
using (Stream reader = response.GetResponseStream())
{
result = XDocument.Load(reader);
}
}
}
}
else
{
request.Abort();
}
更新:我在请求中添加了一个等待句柄,如果超时,我会中止 httpwebrequest。这会处理 HttpWebRequest 启动的任何线程吗?