Gar*_*ett 13 c#-5.0 windows-8 windows-runtime .net-4.5 windows-store-apps
我正在编写一个只能在PC上运行的Metro应用程序(因此没有,或者至少不会担心电池寿命).当用户单击按钮时,我需要它来注册并运行后台任务.它注册很好,但我发现没有办法使它比15分钟的延迟更快运行,这对这个应用程序来说是无用的.任何想法我怎么能让它立即运行?
此外,我在这里发现了一个类似的问题,说它不可能,但有人必须想出办法.
编辑:
我要求这项任务的理由如下:
我的应用程序将在很长一段时间内出现读取和写入文件,时间从几分钟到几个小时不等.在大部分时间内,应用程序不太可能在前台呈现.因为我需要代码能够继续执行,所以最好的方法是创建后台任务,但我找不到在Visual Studio之外手动启动此任务的方法,尽管在Visual Studio中它可以完美地工作.如果有更合适的方法来处理此执行,我愿意使用它.
我解决这个问题的方法是创建一个可以从应用程序和后台任务调用的通用函数.
在用户单击注册按钮的情况下,您可以注册任务,然后调用常用功能(从您的应用程序).任务运行时,它也可以调用相同的常用功能.
编辑
由于OP的额外信息而进行修订.
我认为你可以通过metro应用程序实现这一目标的唯一方法是让你的用户将你的应用程序"抢购"到桌面上 - 在你的快照应用程序上,他们可以点击启动/停止并且只能同时使用桌面两个应用程序都在前台运行.
我认为我的其他答案并不完整,所以我会尽力提供更好的答案.
澄清一下:您声明使用后台任务的全部原因是,即使您的应用程序被暂停,您的应用也会继续运行一些代码.
后台任务:
您无法触发WinRT后台任务立即运行.
请记住,默认情况下,后台任务每2小时有1秒CPU,并且无法指定何时激活 - 您只能使用机会触发 - 在这种情况下对您没有好处.
此外,即使您的应用程序是锁定屏幕应用程序,也不能指定后台任务的立即处理,除非您使用推送通知,这不适合您尝试执行的操作.对于锁屏应用程序,您通常每15分钟获得2秒CPU.
OnSuspending:
但是,如果您的应用程序被暂停,您仍然有几秒钟(5,根据此:http://www.redlist.ch/post/Time-limit-on-suspending-a-WinRT-app.aspx)在您的应用程序被操作系统暂停之前整理的时间.这个暂停宽限时间比你在后台任务中的时间要长!
因此,我建议不要使用后台任务,而是启动后台线程(根据我的其他答案)来执行按钮操作(使用本地状态记录其进度).现在,如果您还加入App onsuspending事件,您可以使用它来查看是否还没有通过按钮操作完成某些操作并完成它.
希望它有意义.祝好运!
| 归档时间: |
|
| 查看次数: |
5911 次 |
| 最近记录: |