我有一个带有后台桌面扩展程序的UWP app,该扩展程序可以执行任务,有时它会闲置数小时,有时每隔几秒钟就会需要一次。我需要知道它何时未运行时,是否应该使用Application.Current.Shutdown()
将其关闭,还是只是让其运行并等待下一个RequestReceived
?我不想浪费资源,但是好像一个不活动的Desktop Extension占用的资源很少,对吧?
关闭它的唯一问题是性能:UWP应用需要等待响应,因此启动组件和发送请求与仅发送请求之间是否存在性能差异?
无论哪种方式,这里的最佳做法是什么?
答案 0 :(得分:0)
如果您的桌面扩展后台进程仅用于处理来自UWP前台应用程序的请求,则最佳实践是将其生存期与前台应用程序的状态关联起来。您可以从UWP对其进行控制,方法是在UWP进入不再需要该扩展的状态(例如,当它被挂起时)时,向您的扩展发送一条消息以关闭自身。
通常,良好的做法是,当AppService连接关闭时,扩展名自行关闭。您可以通过侦听扩展程序中AppServiceConnection实例上的ServiceClosed事件来执行此操作。我在此处发布了一个示例(“处理流程退出-场景#2):https://stefanwick.com/2018/04/16/uwp-with-desktop-extension-part-3/