由于WinRT具有独特的功能,我想知道是否要制作针对WinRT的Windows服务?如果不可能,是否有使不可见的 WinRT/Metro 应用程序成为可能的解决方法?
非常感谢。
由于WinRT具有独特的功能,我想知道是否要制作针对WinRT的Windows服务?如果不可能,是否有使不可见的 WinRT/Metro 应用程序成为可能的解决方法?
非常感谢。
否是正确答案。Metro 应用程序在 Metro shell 和执行容器内执行,该容器创建远离系统资源(包括服务)的沙箱。因此,metro 应用程序无法访问本地服务。同样,出于这个原因,metro 应用程序不能成为服务。
后台任务和通过 Windows 通知服务推送通知是 Metro 应用程序在不活动时与用户交互的唯一方式。否则,当应用程序不活动(不可见)时,它的所有线程都被挂起(与服务不同)。
至于后台任务,它们的活动受到与 Metro 应用程序相同的限制,并且每 2 小时限制为一个 CPU 秒(有一个例外)。推送通知可以更频繁地执行,但只能更新磁贴或发出 toast 通知。
Metro 应用程序的意图不同于传统的桌面应用程序:
Metro 应用程序是独立于架构的(在 Intel 或 arm 上运行)。Metro 应用程序是触手可及的,专为触摸屏而构建。Metro 应用程序是完全硬件加速的。Metro 应用程序利用经过认证的设备提供的下一代硬件,包括前所未有的电池寿命。Metro 应用程序是 Windows 商店提供的唯一应用程序。
看,选择 Metro 应用程序确实意味着承认桌面应用程序的一些无限功能。但是,收益也很显着。
不,这是不可能的(服务枯萎,或“隐形”地铁应用程序)。
您可以运行可能会执行您所追求的后台任务,但在不了解您的问题的情况下我不能说。
这取决于你想做什么。
WinRT 是一种 API,可以从 Metro(Windows 应用商店)应用程序和桌面/C# 应用程序访问。
但是没有公开完整的 API - 请参阅此处允许访问的内容:http: //msdn.microsoft.com/en-us/library/windows/desktop/hh920511%28v=vs.85%29.aspx
Hanselman 展示了如何向 WinRT 添加引用:
<PropertyGroup> <TargetPlatformVersion>8.0</TargetPlatformVersion> </PropertyGroup>
http://www.hanselman.com/blog/HowToCallWinRTAPIsInWindows8FromCDesktopApplicationsWinRTDiagram.aspx