这是一个由两部分组成的问题
1) 在 WP7 中是否有可以同时运行的 HttpWebRequests 的最大数量?
我将创建一个 ScheduledTaskAgent 来运行 PeriodicTask。将有 2 个不同的 REST 服务调用,第一个将获取需要下载的记录的 ID 列表,第二个服务将用于一次下载这些记录。我不知道会有多少条记录我的客人形象会是+-50。
2.) 一次提出所有个人记录请求是不是一个坏主意? (假设可能)还是我应该等待一个请求完成再开始另一个请求?
最佳答案
我刚刚花了一个半星期的时间让 BackgroundAgent 保持在它的内存限制内,我建议一次做一个。
您将大约一半的内存丢失给系统库等,您的第一个 Web 请求将再占用近 20%,但它似乎会在后续请求中重用该内存。
如果您需要将结果存储到本地数据库中,则需要花费更多的时间。我发现 CompiledQuery
使用的内存更少,这意味着只保留上下文的单个实例。
我建议在每次调用之间执行一次 GC.Collect()
,我什至添加一个简短的 Thread.Sleep()
只是为了确保进程有一些时间收拾东西。
我做的另一件事是跟踪我使用了多少内存,并在我达到大约 97% 或 98% 时尝试正常退出。
您不能使用调试器来测试内存限制,因为调试内存要高得多并且不会强制执行限制。但是,对于代码版本之间的比较测试,调试器确实会在后续运行相同代码时产生非常相似的结果。
您可以使用 Microsoft.Phone.Info.DeviceStatus.ApplicationCurrentMemoryUsage
和 Microsoft.Phone.Info.DeviceStatus.ApplicationMemoryUsageLimit
跟踪您的内存使用情况
我将状态日志写入 IsolatedStorage
,这样我就可以在手机上看到运行结果并使用 ScheduledActionService.LaunchForTest()
启动。然后我使用 ShellToast
通知让我知道任务何时运行以及何时完成,这样我就可以启动我的应用程序来读取状态日志而不会中断它。
关于windows-phone-7 - WP7 最大 HTTPWebRequests,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7001369/