0

我有一个 Windows 8 Metro 应用程序,它在每分钟刷新的动态磁贴上显示数据。

当 Metro 应用程序启动时,它会创建一个序列来进行磁贴更新。这完美地工作。

问题:

当我重新启动计算机时,地铁磁贴停止工作。相反,它会回到默认的 Metro 磁贴(应用名称左下图像中间)。

只需启动和停止 Metro 应用程序,我就可以让它再次工作。但我不希望这样做。

我实现了一个实现 IBackgroundTask 并实现 run 方法的类。

public void Run(IBackgroundTaskInstance taskInstance){
    BackgroundTaskDeferral deferral = taskInstance.GetDeferral();
    TileScheduler.CreateSchedule();
    deferral.Complete();
}

在 Metro 应用程序包清单中添加了声明“后台任务”并在指向此类的入口点下。我还注册了计时器和系统事件。

此类代码基本上调用了与第一次设置磁贴序列时主应用程序相同的代码路径,只是它被延迟包装。

问题 这是正确的道路吗(因为它似乎不起作用,所以我猜我的实现是错误的)?还是有更好的方法来做到这一点?

4

1 回答 1

1

这可能只是“你不能用模拟程序做到这一点”的情况。我假设您通过在 Visual Studio 中使用开发人员许可证运行应用程序来执行此操作。我对磁贴更新工作原理的理解(如果我错了,请纠正我),但磁贴会轮询网站以获取下一个要显示的项目。由于您已退回您的盒子,因此任何 Visual Studio 启动的服务(如 ASP.net 主机等)都不会运行,因此磁贴将无法获得其新更新。

如果您想在部署到商店之前测试功能,我建议在您的项目中将 Web 服务部署到 IIS 而不是测试环境并配置 IIS 以在启动时托管该服务。

于 2013-01-06T16:53:45.130 回答