Windows Phone - Web客户端请求未执行

时间:2012-12-15 00:38:49

标签: c# windows-phone-7 windows-phone windows-phone-8

/ *在写这个问题和测试内容时,我设法回答了这个问题,我正在分享我的发现,这样他们就会对其他一些可怜的灵魂有所帮助。请看下面的答案。 * /

我正在尝试在后台任务中从我的API获取JSON数据。 我有很好的后台任务和正在运行的事情,但是当我尝试获取数据时,没有任何反应?!

这是我使用的代码:

    protected override void OnInvoke(ScheduledTask task)
    {

        string wurl = @"http://test.com/api/stuff/getdata";

        WebClient webClient = new WebClient();
        webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClient_DownloadStringCompleted);
        webClient.DownloadStringAsync(new Uri(wurl));


        NotifyComplete();

    }

这就是...... webClient_DownloadStringCompleted永远不会被执行。

1 个答案:

答案 0 :(得分:5)

这里的关键是WebClient执行其方法 异步 NotifyComplete()WebClient拥有之前执行有机会获取数据。

当您致电NotifyComplete()时,它会通知操作系统您已完成执行任务,系统应终止该任务。

解决方法是在异步方法NotifyComplete()(在本例中)和... voala!

的末尾移动webClient_DownloadStringCompleted

警告1: 您最多需要25秒才能完成正在执行的任务,否则任务将被终止。

警告2: 您的后台任务不能消耗超过(在某些手机上)6 MB(在我使用Windows Phone 8测试的模拟器上)10 MB内存!如果您的后台任务确实如此,它将被终止。

如果您的应用会消耗更多内存和时间(最多10分钟),最好考虑使用资源密集型后台任务,请注意此类任务仅在手机充电时可用!