0

我尝试在 Windows Phone 7 项目中使用 HttpWebRequest 从 Web 服务器加载数据。

我成功地获取了一次数据。但是当我第二次尝试调用相同的方法来加载时,我得到了异常,我得到了这个消息:“这是当这个线程从当前函数返回 s 时要执行的下一条语句。”

我正在使用来自独立类的 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”标志,但这不起作用,我仍然在回调函数中遇到异常。

4

1 回答 1

0

您可能会HttpWebRequest.EndRequestStream在同一个地方调用两次IAsyncResult

InvalidOperationException - This method was called previously using asyncResult.

您可能希望allDone.set在读取和关闭响应流之后调用(而不是在写入请求流之后)。

查看您的回调序列是否与示例匹配:

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

于 2013-03-22T07:10:48.757 回答