WP7 Max HTTPWebRequests

Tyl*_*ler 3 windows-phone-7 windows-phone-7.1

这是一个2部分问题

1)在WP7中是否可以同时运行最大数量的HttpWebRequests?

我将创建一个ScheduledTaskAgent来运行PeriodicTask.将有2个不同的REST服务调用,第一个将获取需要下载的记录的ID列表,第二个服务将用于一次下载一个记录.我不知道有多少记录会有我的guestimage + -50.

2.)将所有单独的记录请求立刻变成一个坏主意吗?(假设它可能)或者我应该在开始另一个之前等待请求完成?

Chr*_*nty 5

刚刚花了一个半星期的时间让BackgroundAgent保持在内存限制之内,我建议你一次做一个.

您丢失了大约一半的内存到系统库等,您的第一个Web请求将占用近20%,但似乎在后续请求中重用该内存.
如果您需要将结果存储到本地数据库中,那么它将会占用更多优势.我发现CompiledQuery使用更少的内存,这意味着保持上下文的单个实例.

在每个电话之间GC.Collect(),我建议做一个,我甚至添加一个短片Thread.Sleep(),以确保该过程有一些时间来整理.
我做的另一件事是跟踪我正在使用多少内存,并在达到97或98%时尝试优雅地退出.

您无法使用调试器来测试内存限制,因为调试内存要高得多,并且不会强制执行限制.但是,对于代码版本之间的比较测试,调试器在后续运行相同代码时会产生非常相似的结果.

您可以使用Microsoft.Phone.Info.DeviceStatus.ApplicationCurrentMemoryUsage和跟踪内存使用情况Microsoft.Phone.Info.DeviceStatus.ApplicationMemoryUsageLimit

我写了一个状态日志,IsolatedStorage所以我可以看到手机上的运行结果并ScheduledActionService.LaunchForTest()用来启动它.然后我使用ShellToast通知让我知道任务运行的时间以及完成时,这样我就可以启动我的应用程序来读取状态日志而不会中断它.