windows – 是否可以防止在LOB UWP桌面应用程序/后台任务中挂起
我的任务是将一个LOB桌面应用程序从.NET 4.5.2移植到
Windows 10 UWP.在正常的Win32应用程序中,应用程序会运行,直到用户关闭应用程序(服务和应用程序).但在阅读UWP应用程序时,我发现所有文档都说没有办法阻止应用程序暂停(只是临时或超过配额).我在移动设备/平板电脑上理解这一点,但在具有性能和功率的台式机上却没有.
这个问题的一个常见答案是使用“真实”服务器(通常是Web服务器).但我们的应用程序用于没有互联网的领域.所以我们需要服务器/服务在台式机上运行. 到目前为止,我找到的最佳选择是具有内置后台任务的UWP应用程序,要求推迟.但据我所知,这仍然无法保证暂停.只有一些模糊的信息“你可能不会被暂停,因为它是一台在全球池中拥有大量资源的台式机”…… 我不喜欢将.NET中的LOB服务应用程序和UWP中的客户端保留在一起,因为它们共享许多无法在.NET和UWP之间重用的代码. 那么,任何有明确答案/参考的人都可以阻止在Win10台式机上运行的服务式UWP应用/任务暂停? 解决方法
在wpdev.uservoice.com上已经提出了类似的
uservoice,其中微软正在倾听建议.我们强烈建议您对其进行投票,添加您的评论并对其进行监控.
我认为防止暂停与否应该由用户决定,但是没有办法做到这一点.我同意,在某些特殊情况下,它是有道理的. 但目前UWP的应用程序生命周期对于暂停状态非常清楚.在桌面系列上,UWP应用程序在最小化或Windows进入低功耗状态时暂停. [更新] 您可能不知道的另一种可能的解决方案是Windows 10 – Extended execution session中引入的新功能. 目前没有关于此功能的官方示例,但您可以查看Jerry Nixon and Andy Wigley’s MVA session关于应用程序生命周期(#13). here是该会话的Q& A记录,您可以在其中找到示例代码.您可以下载MVA会话中包含的ppt,其中包含以下代码供您快速参考: private async void OnSuspending(object sender,SuspendingEventArgs args) { var deferral = e.SuspendingOperation.GetDeferral(); using (var session = new ExtendedExecutionSession { Reason = ExtendedExecutionReason.SavingData }) { session.Description = "Upload Data"; session.Revoked += (s,e) => { Log("Save incomplete"); }; try { if (await session.RequestExtensionAsync() == ExtendedExecutionResult.Denied) // takes 3 seconds UploadBasicData(); else // takes 8 seconds await UploadDataAsync(session); Log("Save complete"); } catch { Log("Save failed"); } finally { deferral.Complete(); } } } 但正如杰瑞所说,仍然无法保证100%可靠. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- wix – Burn bootstrapper未正确检测Windows安装程序版本
- windows-phone-8 – 水平拉伸 – 组头ListView
- windows-phone-7 – windows phone芒果 – 点击和点击之间的
- Windows防火墙,Tinywall和GIT
- Windows的“man”程序在哪里(打开UNIX手册页的程序)?
- Windows 常用命令之ipconfig
- SAP ECC6 SOLUTION MANAGER KEY 生成脚本 (VBS)
- windows安装kafka过程 【本地测试】外赋快速启动小脚本
- Windows系统CMD常用命令大全
- windows – 禁用USB存储设备