繁体   English   中英

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

[英]Windows Phone - Web client request doesn't get executed

/ *在写这个问题和测试东西的时候,我设法回答了这个问题,我在分享我的发现,这样对其他可怜的人会有所帮助。 请参阅下面的答案。 * /

我正在尝试在后台任务中从我的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 ... webClient_DownloadStringCompleted永远不会执行。

这里的关键是WebClient 异步执行其方法,并且在WebClient有机会获取数据之前先执行NotifyComplete()

调用NotifyComplete() ,它会通知OS您已完成执行任务,系统应终止该任务。

解决方案是将NotifyComplete()移动到异步方法webClient_DownloadStringCompleted (在本例中为)的末尾,然后... voala!

警告1:您最多有25秒的时间来完成您正在做的事情,否则任务将终止。

警告2:您的后台任务消耗的内存不能超过(在某些手机上)6 MB(在我使用Windows Phone 8测试的仿真器上)需要10 MB的内存! 如果您的后台任务执行了,它将终止。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM