0

以前にも同様の質問があっ ことは承知していますが、提供された解決策はどれもうまくいきませんでした。

メソッドから返されたトークンを調べるBeginGetResponseと、次の例外がスローされていることがわかります。

'token.AsyncWaitHandle' threw an exception of type 'System.NotSupportedException'

このページは、この例外は Callback パラメーターが Nothing であることを意味することを示していますが、コールバックを渡しています。ブレークポイントを挿入すると、デバッガーがコールバック メソッドに割り込んでいます。ただし、requestコールバック内のオブジェクトは常に null です。resultコールバック メソッドのオブジェクトで同じ例外の詳細を表示できます。

new AsyncCallback(ProcessResponse)通話時に使ってみたBeginGetResponse

追加してみましたrequest.AllowReadStreamBuffering = true;

このエミュレータ内とデバイス上で試しましたが、どちらもうまくいきませんでした。

public static void GetQuakes(int numDays)
{
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://magma.geonet.org.nz/services/quake/geojson/quake?numberDays=" + numDays);
    // Examining this token reveals the exception.
    var token = request.BeginGetResponse(ProcessResponse, request);
}

static void ProcessResponse(IAsyncResult result)
{
    HttpWebRequest request = result.AsyncState as HttpWebRequest;
    if (request != null)
    {
        // do stuff...
    }
}

というわけで、次はどこを見ようか迷ってしまいます。

4

1 に答える 1

1

「token.AsyncWaitHandle」が「System.NotSupportedException」タイプの例外をスローしました

このページは、この例外が Callback パラメータが Nothing であることを意味することを示しています

あなたが見ているドキュメントhttp://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.begingetresponse%28v=vs.95%29.aspxは、BeginGetResponse に関するものです。Silverlight は AsyncWaitHandle を使用せず、NotSupportedException を正しくスローします。System.NotSupportedException is for call to IAsyncResult.AsyncWaitHandle という例外が表示されていますtoken

IAsyncResult.AsyncWaitHandle に関するドキュメントでは、待機ハンドルを作成するかどうかは IAsyncResult の実装次第であると明示的に述べていますhttp://msdn.microsoft.com/en-us/library/system.iasyncresult.asyncwaithandle(v=vs.95 .aspx . これを心配することは、あなたを間違った道へと送り込んでいます。

あなたが見ている実際の問題を説明する必要があると思います。何を調査したかを知ることは素晴らしいことですが、この場合、問題の解決に役立ちます。

if ステートメントでテストする場合、コードは機能し、ProcessResponse リクエストでは null であってはなりません。提供されたコードを Windows Phone アプリケーションにコピーし、問題なく実行しました。

于 2012-04-10T22:33:26.817 に答える