C# DispatchTimer事件中的Windows运行时通知

C# DispatchTimer事件中的Windows运行时通知,c#,notifications,windows-runtime,winrt-xaml,toast,C#,Notifications,Windows Runtime,Winrt Xaml,Toast,我有一个简单的xaml表单,当调用LoadState时,它启用一个调度计时器。当调度计时器启动时,它会检查服务中的新项目。如果一个新项满足某个条件,它会将消息添加到一个局部变量(该变量最终会绑定到一个listview),然后我们使用ToastNotification框架来创建一个新的toast。然而,我注意到的一件事是,ToastNotifications似乎只有在应用程序处于焦点状态时才起作用(当然,这并不能说明问题)。我认为这在某种程度上是有道理的,因为我的应用程序在没有集中注意力时会被暂停

我有一个简单的xaml表单,当调用LoadState时,它启用一个调度计时器。当调度计时器启动时,它会检查服务中的新项目。如果一个新项满足某个条件,它会将消息添加到一个局部变量(该变量最终会绑定到一个listview),然后我们使用ToastNotification框架来创建一个新的toast。然而,我注意到的一件事是,ToastNotifications似乎只有在应用程序处于焦点状态时才起作用(当然,这并不能说明问题)。我认为这在某种程度上是有道理的,因为我的应用程序在没有集中注意力时会被暂停


但是,我知道我的DispatchTimer是在应用程序挂起时执行的,因为我看到web请求向服务发出。这一定意味着我发送通知的电话不知怎的被推迟了。我想从概念上讲,如果我的应用程序被挂起,我如何执行toast通知?我已经阅读了背景任务,但这些任务只对系统事件做出响应。我真正想要的是,我的应用程序能够轮询消息,而不管其处于挂起状态,在可能的情况下更新UI,并更新通知,无论应用程序是否被支持。

听起来你可能在寻找更像推送通知的东西。这些对你有用吗?您可以使用它们来显示toast通知、更新live互动程序等


不幸的是,实现场景的唯一可靠方法是使用后台任务,您可以每30分钟运行一次。Dispatchermer需要UI线程,该线程仅在应用程序具有焦点时运行。如果您看到web请求消失,这可能是由于其他一些异常,但实际上,当您的应用程序被挂起时,就不能保证运行更多的用户代码,包括干杯。

推送不是我真正要做的,我不认为。我经常轮询一个API,但是API数据本身不受我的控制(第三方)。你能在你的应用程序消失时暂停轮询,在它再次出现时恢复轮询吗?当然,但这违背了通知的要点,对吗?如果用户需要打开应用程序,则不需要通知。那么,是否所有在非活动“推送”应用程序时通知的应用程序?WinRT的Twitter是推送通知吗?我想是的。这些是toast通知,我认为它们是由推送通知触发的。也许有一种方法可以从后台任务触发这些,但我从来没有这样做过,所以不能肯定,而且可能推送通知可能更可取。回答得好。我想这是有道理的,我真的不在乎是否有新消息进来,除了提醒用户。因此,当用户在邮件查看应用程序中时,我可以每5秒对邮件进行一次轮询,并且只针对后台线程上的特定条件,使用BackgroundTask进行不太频繁的轮询。