0

WindowsPhone7プロジェクトでHttpWebRequestを使用してWebサーバーからデータを読み込もうとしています。

私は一度データを取得することに成功しました。しかし、同じメソッドを呼び出して2回目をロードしようとすると、例外が発生し、次のメッセージが表示されます。「これは、このスレッドが現在の関数からsを返すときに実行する次のステートメントです。」

スタンドアロンクラスからのHttpWebRequest非同期呼び出しを使用しており、Dispatcher内にOnCompletedイベントをアタッチして、WindowsPhone7の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();
        }
    }

ユーザーがボタンをクリックするたびに1回だけ更新呼び出しをトリガーするように強制する必要がありますか?BeginGetRequestStream()を呼び出して送信する前に、コードに「isLoading」フラグを追加しようとしましたが、機能しません。それでも、コールバック関数で例外が発生しました。

4

1 に答える 1

0

HttpWebRequest.EndRequestStream同じ電話を2回かけている可能性があります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 に答える