2013-03-22 164 views
0

我嘗試在Windows Phone 7項目中使用HttpWebRequest從Web服務器加載數據。WindowsPhone7上的HttpWebRequest

我成功獲取數據一次。但是當我嘗試調用同樣的方法加載第二次時,我得到了異常,並且得到了這個msg:「這是當此線程從當前函數返回時執行的下一個語句。」

我使用HttpWebRequest獨立類的異步調用,並在Dispatcher中附加了一個OnCompleted事件來更新Windows Phone 7的UI。

enter code here 
    private void RequestStreamCallBack(IAsyncResult asyncResut) 
    { 
     HttpWebRequest hwr = asyncResut.AsyncState as HttpWebRequest; 
     if (hwr != null) 
     { 
      Stream stream = hwr.EndGetRequestStream(asyncResut);//error on this row, InvalidOperationExceptioni 

      byte[] writeByte = System.Text.Encoding.UTF8.GetBytes(_postData); 
      stream.Write(writeByte, 0, writeByte.Length); 
      stream.Close(); 

      allDone.Set(); 
     } 
    } 

我每次用戶點擊按鈕時,是否只強制觸發一次更新調用? 我嘗試在發送調用BeginGetRequestStream()之前向我的代碼中添加「isLoading」標誌,但它不起作用,我仍然在回調函數中遇到異常。

+0

*什麼*例外弄來? – 2013-03-22 06:52:22

回答

0

您可以在同一IAsyncResult被調用HttpWebRequest.EndRequestStream兩次:

InvalidOperationException - This method was called previously using asyncResult. 

您可能需要閱讀和關閉響應流(而不是寫請求流後)調用allDone.set

看看你的回調序列的例子匹配:

http://msdn.microsoft.com/en-us/library/7de1x8cb.aspx

+0

我明白了。也許我結合http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.begingetresponse.aspx和http://msdn.microsoft.com/en-us/library/7de1x8cb.aspx示例一個班級。 -_-# – Ericpoon 2013-03-22 07:30:31