是否可以制作WinRT服务

时间:2012-04-26 02:32:21

标签: c# windows-runtime

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

非常感谢。

3 个答案:

答案 0 :(得分:5)

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

通过Windows Notification Services提供后台任务和推送通知是城域应用在未激活时与用户进行交互的唯一方式。否则,当应用程序未处于活动状态(不可见)时,其所有线程都将被挂起(与服务不同)。

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

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

  

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

看,选择一个城域网应用确实意味着承认桌面应用程序的一些无限能力。然而,收益也很重要。

答案 1 :(得分:1)

没有这个是不可能的(服务或“看不见的”都市应用程序)。

你可以运行可能会完成你所做的事情的后台任务,但不能理解我无法解释的问题。

答案 2 :(得分:0)

这取决于你想做什么。

WinRT是一个API,可以从Metro(Windows应用商店)应用程序和Desktop / 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