首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Microsoft.Phone.Scheduler.Alarm in a BackgroundTask

Microsoft.Phone.Scheduler.Alarm in a BackgroundTask
EN

Stack Overflow用户
提问于 2015-05-30 20:52:40
回答 1查看 194关注 0票数 0

我建议你提供帮助。

我正在使用Silverlight 8.1编程一个基于全球定位系统的报警应用程序(因为Microsoft.Phone.Scheduler.Alarm api在WP8.1中被阻塞)。现在,我正在尝试创建一个由BackgroundTask触发的GeofenceMonitor。

我的问题是,BackgroundTask必须位于"Windows组件“项目中,您不能将编译目标设置为Silverlight 8.1,因此不能在其中创建警报。

有解决办法吗?还是根本不可能从BackgroundTask发出警报?我会感激所有的解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-30 22:29:34

不幸的是,您不能混合WinRT和WP8.1Silverlight。

正如您所提到的,警报API不适用于WP (“通用”),Silverlight运行时也没有GeofenceMonitor。您可以使用带有WinRT后台任务的Silverlight项目,但这不会使您有任何进展。

我不知道您是否希望这些警报与某个位置永久关联,或者更确切地说是短暂的,但也许这将是一个解决方案:

将您的应用程序配置为在后台继续运行。有一个专门的"LocationTracking“执行类型,您可以使用任何应用程序,跟踪全球定位系统的位置在后台(详见本站 )。

然后,您可以使用PositionChanged事件的Geolocator来检查您是否在您的围栏内,并添加一个(几乎)即时警报。

代码语言:javascript
复制
const string id = "whateverYourIdIs";
var existing = ScheduledActionService.Find(id);
if(existing != null)
   ScheduledActionService.Remove(id);

Alarm alarm = new Alarm(id)
{
   BeginTime = DateTime.Now.AddSeconds(1),
   Content = "You have reached your location!",
};

ScheduledActionService.Add(alarm);

如果你不想让你的应用程序继续运行,你可以(很可能)在地理围栏背景任务(WinRT)中启动另一个后台任务(SL)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30551284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档