WP7 HttpWebRequest는 시간 제한을 지원하지 않으므로 타이머를 사용하여 기능을 구현하고 있습니다. 아래는 그 예입니다. UI 양식에서 GetConnection()을 호출합니다. 그러나 ReadCallback()은 타이머 시간이 끝날 때까지 실행되지 않습니다. 타이머가 중지되면 ReadCallBack()이 트리거됩니다. 타이머 스레드가 HTTP 응답을 차단하고있는 것 같습니다. 어떤 도움을 주셔서 감사합니다. ManualResetEvent도 시도해 봤는데 같은 결과가 있습니다.WP7의 HttpWebRequest Timeout이 타이머와 함께 작동하지 않습니다.
private HttpWebRequest conn;
private bool _timedOut = false;
private DispatcherTimer tmr;
public void GetConnection()
{
conn = (HttpWebRequest)HttpWebRequest.Create(new Uri("http://www.contoso.com"));
conn.Method = "GET";
tmr = new DispatcherTimer();
tmr.Interval = TimeSpan.FromSeconds(10);
tmr.Tick += new EventHandler(tmr_Tick);
_stopTimer = false;
IAsyncResult resp = conn.BeginGetResponse(new AsyncCallback(ReadCallback), conn);
tmr.Start();
}
private void tmr_Tick(object sender, EventArgs e)
{
if (!_stopTimer)
{
tmr.Stop();
conn.Abort();
}
}
private void ReadCallback(IAsyncResult asynchronousResult)
{
_stopTimer = true;
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
m_response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
}
T 행크스, 지금 일합니다. – user693080