Windows Phone 后台任务过早停止

2024-05-13

我正在开发一个 WP8.1 SL 应用程序,它使用后台任务(不是代理!)。

我的任务由 TimerTrigger 触发 - 每 30 分钟一次(我相信这是 Windows Phone 的最小间隔,对吧?)。它正在做很多工作,并且由于某种原因,有时它会被中断 - 也就是说,它会在中间停止。我知道它处于中间的方式是因为我记录了正在发生的事情并且任务的工作每次基本上都是相同的。

我昨天将应用程序部署到我的设备上来测试一种新方法,一切都工作正常 - 后台任务每次启动时都会执行所有操作 - 工作得非常顺利。今天我的设备需要软重置,所以我做到了(没有任何效果,自从我更新到 WP8.1 以来,这种情况时常发生)。从那时起,后台任务每次都会在中间被中断,就像之前的方法一样。

有什么想法会导致这种情况吗?我认为它可能与软重置有关,因为 - 之前成功率为 100%,之后成功率为 0%。

到目前为止我尝试过的:

  • 我正在记录错误,我对所有内容都有一个 try-catch,我已经订阅了 UnobservedException 事件和任务的 Canceled 事件,并且我正在记录挂起计数 - 这些都没有帮助。看起来没有错误,没有暂停,也没有取消。

  • 我时不时地记录一下当前的内存使用情况,大约是16-17MB。在我的设备上,限制应该是 30MB,所以我认为这不是问题。

  • 我尽可能地调用 RequestAccessAsync 。我认为一次就足够了,但由于软重置问题,我决定将其放在其他 1-2 个位置以检查它是否导致问题。好吧,事实并非如此,或者至少这没有解决问题。

我不确定的是:

  • 我不知道如何检查我的任务消耗的CPU时间。我找不到好的/可靠的方法来做到这一点。另外,我找不到任何信息可以解释为什么任务有时会在中间停止,而其他时候 - 它会工作得很好。

知道为什么我的后台任务有时会停在中间吗?我真的很难确定如何修复/改进该应用程序以及它是否能正常工作。

Thanks.


所以,我想我找到了我的问题所在。

首先,后台任务需要大量的CPU时间,超过了限制,这就是它在中间被杀死的原因。

它有时起作用的原因是因为有时,我正在测试的设备将应用程序视为处于调试状态(或带有附加的调试器)。在这种情况下,对 CPU 时间的限制被取消。

因此,即使我卸载应用程序并在发布中重建它并重新部署,并在不附加调试器的情况下启动它,设备也不会强制执行约束。只有当我在部署后至少使用调试器启动应用程序一次(或者可能是第一次)时,才会发生这种情况。重新启动设备(只需关闭电源然后再打开)即可解决此问题。

当我测试时,使用相同版本的应用程序,其后台任务运行时间为40 分钟在一台设备上,而在另一台设备上只需 3-4 秒。重新启动第一台设备后,后台任务开始正常运行(仅运行几秒钟)。

因此,如果您想测试后台任务的 CPU 限制:

  1. 您必须在设备上进行测试,而不是在模拟器上进行测试。
  2. 如果已安装该应用程序,请将其卸载。
  3. 重新启动设备。
  4. 部署应用程序的发布版本。
  5. 运行应用程序,以便它可以注册后台任务,然后关闭它。
  6. 等待后台任务被调用。 (您可以添加一个可以强制的触发器,例如 TimeZoneChanged 或 UserPresent,以便您可以快速测试它。)

附:这可能不是完美的答案,但这些是我的观察,它们帮助我解决了我的问题。这是迄今为止我发现的测试 CPU 时间的最佳方法,但它远非完美。所以,如果有人有更好的想法,请分享。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows Phone 后台任务过早停止 的相关文章

随机推荐

  • 原生插入符位置 macos cocoa

    我希望能够使用 cocoa 或 appleScript 获取 Mac High Sierra 中任何应用程序内的全局插入符位置 我已经使用 NSEvent 来获取键盘和鼠标挂钩 但是有没有办法获取插入符位置挂钩 插入符号与鼠标位置不同 它会
  • 如何在 Emgu CV 项目中利用 OpenCL

    我是使用 Emgu CV 的新手 并开始创建小型示例项目 例如面部检测 眼睛检测等 如果我可以利用 OpenCL 来加速使用 GPU 的过程 那就太好了 否则 当我降低scaleFactor时 它会导致大量的CPU利用率 我怎样才能做到这一
  • 非相邻单元格作为数组函数的输入(MIN 和 ISBLANK)

    提出了这个问题 由于具体问题的答案是一个拼写错误 因此被删除 https stackoverflow com questions 59289065 excel non adjecent cells as input to array fun
  • 为什么这些向量不相等?

    我创建了两个向量 并用push back填充另一个向量 用索引填充另一个向量 我希望这些是相等的 但事实并非如此 有人可以解释一下这是为什么吗 include
  • jhipster-gateway API 部分中未列出 API-first Rest 端点 (swagger-ui)

    使用jhipster 5 7 2 我创建了一个 api 网关和两个微服务 在第一个中 我创建了一个实体 它在网关后面完美运行 网关显示生成的实体的 api 端点 我生成了第二个微服务 但这次我已经在 yml 文件中定义了一个 api 因此我
  • 三-mtl-loader 错误:THREE.MeshPhongMaterial:.shading 已被删除 -> 对象不可见

    昨天我问了这个问题 未捕获的类型错误 THREE MTLLoader 不是构造函数 2 0 https stackoverflow com questions 47741644 uncaught typeerror three mtlloa
  • Chrome 75 正则表达式,“S”匹配奇怪的 unicode 范围

    我们在最新版本的 Chrome 75 上有一个奇怪的错误 它取代了S to 83 console log AZERTYUIOPQSDFGHJKLMWXCVBN replace u00A0 u9999 lt gt gim char gt ch
  • 如何修复 SSIS“文件/进程不在路径中”警告?

    SSIS 附带了许多解决数据获取和集成问题的任务 但它缺少的一项任务是用于通过 HTTP 下载文件的 HTTP 任务 为了解决这个问题 我安装了Wget http gnuwin32 sourceforge net packages wget
  • 读取FCS文件

    我正在研究流式细胞术 我想使用 python 解析 fcs 文件 我在互联网上研究过 有一个模块fcm但这是针对Linux操作系统的 我正在Windows上工作 我想知道如何使用 python 解析 Windows 中的 fcs 文件 如果
  • Rails 3.1 和 Asset Pipeline:使用 Capistrano 进行部署时遇到的问题

    我刚刚从 Ruby on Rails 3 0 10 切换到 3 1 0 我想使用 Capistrano gem 部署我的资产文件 我的本地计算机是运行 Snow Leopard 的 MacO 我的远程计算机运行的是 Ubuntu 10 04
  • 在 flutter 中将 JSON 解析为 Map

    我收到后端的响应 measurements pm10 name pm10 value 20 8647 unit g m pm25 name pm10 value 20 8647 unit g m o2 name pm10 v
  • 如何让 UITableview 在重新加载时转到页面顶部?

    当我调用以下命令时重新加载表数据时 我试图让 UITableview 转到页面顶部 void pickerView UIPickerView pickerView didSelectRow NSInteger row inComponent
  • Scala 2.9 无法在 Windows XP 上运行“hello world”示例

    我正在尝试在 Windows XP 上使用 scala 2 9 1 Final 运行 HelloWorld 示例 object HelloWorld extends App println Hello World 文件另存为Hello sc
  • 您将如何创建“手动”django 迁移?

    我发现我可以使用 django 项目中的 postgres 数据库设置列的默认值migrations RunSQL some sql 我目前正在通过添加列 makemigrations 然后删除列 makemigrations 然后手动修改
  • jQuery hide() 动画向右滑动

    使用 jQuery 的hide 使用可选的持续时间参数的函数 我可以在我的网站上获得一些警报框 以优雅地滑出屏幕并消失 隐藏动画的默认方向似乎是向左滑动 尽管此行为未在hide 定义页 http api jquery com hide 我需
  • 我应该在我的 iOS Objective-C 项目中使用它吗?

    Xcode 中的 构建设置 中的 Mach O 类型是什么 应该设置什么 它有这些选项 可执行文件 动态库 捆绑包 静态库 可重定位对象文件 自从我将其从可执行文件更改为静态库以来 我遇到了错误 Apple Mach O 链接器错误组 我的
  • Google Tag Assistant 询问 Feed ID

    我被要求使用旧的再营销跟踪代码升级现有网站 如下所示
  • 用于选择矩形内文本的编辑器

    我经常发现自己在处理某些文本时想要排除文本的特定部分 例如 40 行的前三个字符 我能想到的最快方法是绘制一个矩形并复制文本 我主要使用 Windows 但我确信 grep 或类似的东西可以用少量代码来完成此操作 我最好的方法是打开命令提示
  • ggplot2 中的小时刻度

    我正在处理就寝时间和醒来时间 因此我想创建一个具有 24 小时 x 轴的图表 从第一天中午 12 点开始 到第二天中午 12 点结束 这意味着晚上 11 59 之后 它应该再次从 0 开始 同样的问题 仅涉及数字 我想创建一个从 10 到
  • Windows Phone 后台任务过早停止

    我正在开发一个 WP8 1 SL 应用程序 它使用后台任务 不是代理 我的任务由 TimerTrigger 触发 每 30 分钟一次 我相信这是 Windows Phone 的最小间隔 对吧 它正在做很多工作 并且由于某种原因 有时它会被中