【问题标题】:Continue running a function in minimized state in Windows Phone 8.1在 Windows Phone 8.1 中继续以最小化状态运行函数
【发布时间】:2015-08-20 07:21:11
【问题描述】:

我有一个 CreateSchedule() 函数,它在我打开应用程序时执行。

 private async static Task<int> CreateSchedule()
    {
        try
        {
            DateTime now = DateTime.Now;
            DateTime planTill = now.AddMinutes(15);
            do
            {
                await DoSomeWork();
                now = DateTime.Now;
                await Task.Delay(TimeSpan.FromSeconds(5));
            } while (now < planTill);

            return 1;
        }
        catch (Exception ex)
        {
            Debug.WriteLine(ex);
            return 0;
        }
    }

当应用程序处于活动状态或前台状态时,此函数会连续运行(我使用过 do-while 循环)。但是当我在 WP 上最小化或按下返回或开始按钮时,此功能将不再执行。

那么,即使应用程序被最小化或按下“开始”或“后退”按钮,是否有任何方法可以连续执行该功能。

我曾尝试使用 BackgroundTask,但这似乎只在注册后 0-15 分钟内执行,这不是我的要求。

如果有我们可以在 Windows Phone 后台运行的线程,请提出一些建议。

提前致谢!

【问题讨论】:

  • 您要究竟做什么?
  • 嗨,Shawn,我正在尝试在 WP 8.1 上注册后立即启动后台任务。但它似乎没有这样做。因此,我正在寻找其他一些方法来运行后台线程并使其继续运行,即使应用程序已最小化。
  • 正如@kristian 所说,当您的应用程序最小化时,您无法永远运行代码。您也无法在后台启动后台任务。但是,您可以创建任务实例并调用 run 方法。或者将代码提取到一个通用的核心类中。

标签: c# windows windows-phone-8.1 windows-phone microsoft-metro


【解决方案1】:

您无法在后台运行代码是设计使然。唯一的选择是 BackgroundTask,它有很多限制(必须在锁定屏幕上,每 15 分钟一次等),如您所述。

所以简短的回答是你不能。

您可以阅读更多关于后台任务的信息here

【讨论】:

  • 感谢您的回答@Kristian。是否有任何可用于 WP8.1 的线程可以在后台运行一段时间?
  • 您可以每 15 分钟运行一次后台任务,持续 2 秒的 CPU 时间。 link
  • 好的,谢谢。 BackgroundTask 似乎无法按我的需要工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多