是否可以制作 WinRT 服务

本文关键字:WinRT 服务 是否 | 更新日期: 2023-09-27 18:32:12

由于WinRT具有独特的功能,我想知道它是否要制作针对WinRT的Windows服务?如果不可能,是否可以通过解决方法使不可见的 WinRT/Metro 应用程序成为可能?

多谢。

是否可以制作 WinRT 服务

否 是正确的答案。Metro 应用程序在 Metro shell 内部和执行容器内执行,该容器创建远离系统资源(包括服务)的沙盒。因此,Metro 应用程序无法访问本地服务。同样,出于这个原因,Metro 应用程序不能成为服务。

通过 Windows 通知服务的后台任务和推送通知是地铁应用在不处于活动状态时与用户交互的唯一方法。否则,当应用程序处于非活动状态(不可见)时,其所有线程都将挂起(与服务不同)。

至于后台任务,它们的活动受到与 Metro 应用程序相同的限制,并且限制为每 2 小时一个 CPU 秒(有一个例外)。推送通知可以更频繁地执行,但只能更新磁贴或引发 Toast 通知。

Metro 应用程序的意图与传统桌面应用程序不同:

Metro 应用程序独立于架构(在英特尔或 arm 上运行)。Metro 应用是触摸式的,专为触摸屏而构建。城域网应用完全硬件加速。Metro 应用利用认证设备提供的下一代硬件,包括前所未有的电池寿命。Metro 应用程序是 Windows 应用商店提供的唯一应用程序。

看,选择地铁应用程序确实意味着放弃桌面应用程序的一些无限功能。然而,收益也是巨大的。

不,这是不可能的(枯萎服务或"隐形"地铁应用程序)。

您可以运行后台任务,这些任务可能会执行您所追求的操作,但是如果不了解您的问题,我就不能说。

这取决于你想做什么。

WinRT 是一个 API,可以从 Metro (Windows Store) 应用和桌面/C# 应用访问。

但是,并非公开了完整的 API - 请参阅此处允许您访问的内容:http://msdn.microsoft.com/en-us/library/windows/desktop/hh920511%28v=vs.85%29.aspx

Hanselman 演示如何将引用添加到 WinRT:

  • 编辑 csproj:
<PropertyGroup>
  <TargetPlatformVersion>8.0</TargetPlatformVersion>
</PropertyGroup>
  • 然后添加对核心/Windows的引用。

http://www.hanselman.com/blog/HowToCallWinRTAPIsInWindows8FromCDesktopApplicationsWinRTDiagram.aspx