0

我意识到之前已经 提出 类似的问题,但是所提供的解决方案都没有奏效。

检查从该BeginGetResponse方法返回的令牌,我发现那里引发了以下异常:

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

这个页面告诉我这个异常意味着回调参数是空的,但是我正在传递回调 - 当我插入断点时,调试器会中断回调方法。但是request回调中的对象始终为空。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”类型的异常

这个页面告诉我这个异常意味着回调参数是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 请求中的请求不应为空。我只是将您提供的代码复制到 Windows Phone 应用程序中,然后运行它没有任何问题。

于 2012-04-10T22:33:26.817 回答