我想在我的应用处于后台时向操作中心发送Toast通知。所以我设置了一个Timer,当我从应用程序启动计时器时,10秒后它会产生一个Toast通知。现在,当我在调试器中尝试它时,即使我按下主页按钮或者如果我使用调试器暂停选项暂停应用程序,也会生成吐司。但是当我部署应用程序时,当我启动计时器并单击主页按钮时,它不会生成吐司。任何人都可以为此建议解决方案..?
添加代码
private Timer stateTimer;
private void Button_Click(object sender, RoutedEventArgs e)
{
TimerCallback timerDelegate = new TimerCallback(timer_Tick);
TimeSpan delayTime = new TimeSpan(0, 0, 10);
AutoResetEvent autoEvent = new AutoResetEvent(false);
TimeSpan intervalTime = new TimeSpan(0, 0, 0, 0, 0);
Timer notification_timer = new Timer(timerDelegate, autoEvent, delayTime, intervalTime);
}
private void timer_Tick(object state)
{
ToastTemplateType toastTemplate = ToastTemplateType.ToastText02;
XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplate);
XmlNodeList toastTextElements = toastXml.GetElementsByTagName("text");
toastTextElements[0].AppendChild(toastXml.CreateTextNode("Download has complete"));
toastTextElements[1].AppendChild(toastXml.CreateTextNode("Download has complete"));
IXmlNode toastNode = toastXml.SelectSingleNode("/toast");
((XmlElement)toastNode).SetAttribute("duration", "long");
((XmlElement)toastNode).SetAttribute("launch", "{\"type\":\"toast\",\"param1\":\"12345\",\"param2\":\"67890\"}");
ToastNotification toast = new ToastNotification(toastXml);
ToastNotificationManager.CreateToastNotifier().Show(toast);
}
答案 0 :(得分:1)
当您正在调试时,在从Visual Studio中的生命周期事件中明确选择暂停之前,您的应用永远不会被暂停。因此,当您按下主页按钮时,您的应用程序实际上会继续运行。
在实际设备上运行没有附加调试器的应用程序时,情况并非如此。一旦你点击主页按钮,你的应用程序就会被暂停,直到它恢复后才会运行。
您必须使用后台任务在后台执行代码。