Windows8ストアクラスライブラリに移植するクラスライブラリがあります。メソッドの1つは、現在サポートされていない同期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によって開始されたスレッドを処理しますか?