【问题标题】:How to show content dialog from background task in uwp app如何在 uwp 应用程序中显示来自后台任务的内容对话框
【发布时间】:2017-03-05 09:01:37
【问题描述】:

我正在尝试开发一个运行后台任务的应用程序(读取机器的 rfid 传感器)我想创建另一个任务来报告机器状态,它将检查上次读取传感器的时间,当超过 5 分钟时它会提示用户选择等待的原因。在它显示后我希望任务继续检查,因为如果机器在用户从内容对话框中选择某些内容之前开始工作,我想隐藏内容对话框并继续工作。当然我不是要求完整的代码:) 如果你能给出一个非常简短的后台任务示例,它可以显示内容对话框并继续运行,那就太好了。我发现的最接近的例子是这个,但我无法理解并实现我的代码Show a modal UI in the middle of background operation and continue

非常感谢。

 await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
              () =>
              {
                  if (DialogisOpen == false)
                  {
                      //its been 3 min since machine is not working so we      are showing user dialog to ask for a reason 
                      mp = new MainPage();
                      mp.TestUi();
                      DialogisOpen = true;

                  }

              });

【问题讨论】:

  • 你不能......但你可以通过 toast 通知来吸引用户的注意力。
  • 感谢您的回答。但是你确定吗?我分享的这个链接这个人似乎是他做的
  • 他正在使用的是 WPF,而您使用的是 UWP。 UWP 中的后台任务无法显示任何 UI,因为前台应用未运行。例如,仅使用 toast 通知。另一方面,WPF 没有 UWP 那样的后台任务系统。您确定您使用的是后台任务吗?
  • 是的,我知道这就是我问这个的 uwp 版本的原因。实际上我只是做了我想要的,但我现在确定它的正确方法,所以我对替代方案持开放态度。我不能在这里粘贴我的代码太长了我将用我当前的代码部分编辑我的问题

标签: windows dialog uwp background-process


【解决方案1】:

BackgroundTask 没有任何 UI 支持,因此无法显示任何 UI(包括 ContentDialog),因为它无法访问 UI 线程,但您可以做一些事情。

  • 让 BG 任务显示 ToastNotification(有 UI)
  • 不要使用后台任务,拥有一个最小化运行的完整应用程序和一个单独的进程来保持它的运行。
  • 在您的示例适用的 WPF 中执行此操作。 (你还没有说你是否有理由不能这样做。)
  • 让您的 BGTask 将消息(以各种方式)发送到(或启动)计算机上可以显示提示的另一个进程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    相关资源
    最近更新 更多