【问题标题】:How to stop scheduledtask running when foreground app is active windows phone 8前台应用程序处于活动状态时如何停止计划任务运行 Windows Phone 8
【发布时间】:2023-04-02 21:35:01
【问题描述】:

我之前发布过关于我的后台计划任务必须访问前台应用程序使用的 SQLite 数据库和独立存储的同步问题。

为了简化我想阻止我的后台任务完全运行的过程,它并不是必须运行的,尤其是在前台应用程序处于活动状态时。

有没有办法做到这一点?

我考虑过在应用启动时使用 IsolatedStorage 设置一个标志,然后在应用退出时将其删除,然后让后台任务检查设置,由互斥锁保护。

我认为这个想法原则上是好的,但我猜有时标志不会被取消,例如如果电池没电了......这意味着在打开手机后,如果用户从未使用应用程序并正确退出,后台任务将永远不会运行。这可能不是什么大问题。

使用像这样的某种标志是实现此类功能的唯一方法吗?

谢谢

【问题讨论】:

  • 另外一个问题是当用户打开应用程序时后台任务可能正在运行,所以你不仅需要一个标志来表示后台任务可以运行,后台任务还需要自己的标志表示当前很忙。如果它很忙,则让用户在打开或激活应用程序时等待(最多 25 秒)。有没有人对此有任何其他想法或经验?谢谢。

标签: c# windows-phone-8 windows-phone scheduled-tasks


【解决方案1】:

有一个进程间通信机制来实现这个功能。 由于前台应用程序和 scheduletask 作为不同进程运行,因此可以使用 IPC。

请参考Named Events

在您的 OnInvoke 方法中订阅一个命名事件,该事件将在您的前台应用启动/恢复后立即触发。

一旦您在后台代理中通过此事件获得信号,只需调用 NotifyComplete 即可完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 2014-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    相关资源
    最近更新 更多