【问题标题】:Should Desktop-Extension: Running in background or Shutting down?桌面扩展:在后台运行还是关闭?
【发布时间】:2018-11-24 02:19:50
【问题描述】:

我有一个带有后台桌面扩展程序的 UWP 应用程序,它执行任务,有时它会被使用几个小时,有时每隔几秒就需要它。我需要知道它是否在不运行时,应该使用Application.Current.Shutdown() 将其关闭,还是直接保持运行并等待下一个RequestReceived?我不想浪费资源,但似乎不活动的桌面扩展占用的资源最少,对吧?

关闭它的唯一问题是性能:UWP 应用需要等待响应,那么启动组件和发送请求与仅发送请求之间是否存在性能差异?

无论哪种方式,这里的最佳做法是什么?

【问题讨论】:

    标签: uwp desktop-bridge


    【解决方案1】:

    如果您的桌面扩展后台进程仅用于处理来自 UWP 前台应用的请求,那么最佳做法是将其生命周期与前台应用的状态相关联。当 UWP 进入不再需要扩展程序的状态时(例如,当它被挂起时),您可以通过向您的扩展程序发送一条消息来从 UWP 控制它。

    一般来说,当 AppService 连接关闭时,扩展程序自行关闭是一种很好的做法。您可以通过在扩展中的 AppServiceConnection 实例上侦听 ServiceClosed 事件来执行此操作。我在这里发布了一个示例(“处理进程退出 - 场景 #2):https://stefanwick.com/2018/04/16/uwp-with-desktop-extension-part-3/

    【讨论】:

    • 我应该提到 UWP 应用程序大部分时间都应该在后台运行。那么最好的解决方案是什么?
    • “在后台运行”到底是什么意思?如果您在任务栏中被暂停,那么您将不需要运行扩展程序,不妨将其关闭。另一种(可能更简单)的方法是在扩展中的 AppServiceConnection 上监听 ServiceClosed 事件,然后将自己关闭。我已经在这里解释了更多(“处理进程退出” - 场景#2):stefanwick.com/2018/04/16/uwp-with-desktop-extension-part-3
    • 我的意思是 ShareX 或 GestureSign 正在做的事情,它们有一个由热键或其他操作触发的后台进程。在我的例子中,我的 UWP 组件正在等待选定的应用程序成为焦点,并在这种情况下触发。
    • 动作触发时,如果 UWP 没有运行会发生什么?什么都没有 - 还是从桌面扩展程序启动它?
    • 我正在使用 所以 UWP 部分一直在后台运行。当操作触发时,桌面扩展需要执行操作,但没有显示用户界面。
    猜你喜欢
    • 2018-09-25
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多