5

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

非常感谢。

4

3 回答 3

5

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

后台任务和通过 Windows 通知服务推送通知是 Metro 应用程序在不活动时与用户交互的唯一方式。否则,当应用程序不活动(不可见)时,它的所有线程都被挂起(与服务不同)。

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

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

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

看,选择 Metro 应用程序确实意味着承认桌面应用程序的一些无限功能。但是,收益也很显着。

于 2012-06-29T23:20:15.123 回答
1

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

您可以运行可能会执行您所追求的后台任务,但在不了解您的问题的情况下我不能说。

于 2012-04-26T12:11:10.380 回答
0

这取决于你想做什么。

WinRT 是一种 API,可以从 Metro(Windows 应用商店)应用程序和桌面/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>
  • 然后添加对 Core/Windows 的引用。

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

于 2012-11-08T14:37:04.370 回答