为什么WP8应用程序中的JsonConvert.DeserializeObject有效,ni WP8 ScheduledTask没有

时间:2014-08-29 11:05:49

标签: c# json windows-phone-8 json.net background-process

我在AWS中运行了一个REST服务,它返回了一些信息。当我从我的应用程序中访问该服务时,一切正常。当我在调度任务中使用完全相同的代码时,它不会。 奇怪的是,没有错误,没有例外,没有任何提示,什么通过Visual Studio中的单步执行代码时,对其中JsonConvert.DeserializeObject它不”被称为线打F10时是怎么回事以外跳过执行它的线,但它与击中F5相同。

我的代码是:

private void infoRetrieval_DownloadCompleted(object sender, DownloadStringCompletedEventArgs e)
{
    if (e.Error == null)
    {
        string response = e.Result;
        if (response != null)
        {
            try
            {
                CDateTime info = null;
                CJsonDateTime r = JsonConvert.DeserializeObject<CJsonDateTime>(response);
                info = new CDateTime(r);    

                if (info != null)
                {
                     // Indicate that there is a new info
                }
            } 
            catch (Exception exc)
            {
                // The exception can't be handled in a meaningful way, so it's ignored.
            }
       }
    }
}

这完成实际的呼叫到该web服务的代码看起来是这样的,它也是我同时使用在我的应用程序和在我剂作为OnInvoke方法的一部分完全相同的代码:

infoRetrievalClient = new WebClient();
infoRetrievalClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(infoRetrieval_DownloadCompleted);
infoRetrievalClient.DownloadStringAsync(new Uri(<the URI to the webservice>));

请注意,我在我的应用程序中使用完全相同的代码以及我的ScheduledTaskAgent。此外,我检查了两种情况下检索到的字符串是完全相同的。这里的问题只是我无法解析JSON并使用数据。

对NotifyComplete的调用是在OnInvoke中。

任何帮助都受到高度赞赏,因为我现在被困住了。

伊万

1 个答案:

答案 0 :(得分:2)

我修好了,事实证明伊戈尔的问题让我走上正轨。我将NotifyComplete移动到了web请求的回调中,现在它处理得非常好。

谢谢伊戈尔。

伊万