2012-04-26 107 views
5

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

非常感谢。

+1

我很怀疑。您想做什么? – SLaks 2012-04-26 02:35:37

+0

我想使用标准.NET不提供的几种功能,并且不想调用太复杂的本地C++ API。 – user1343145 2012-04-26 03:26:05

+2

@ user1343145如果.NET不足以解决您的问题,并且您不想使用本机代码,那么您要使用哪种**? – 2012-04-26 03:30:27

回答

1

不可能这是不可能的(停止服务,或“隐形”城域应用程序)。

你可以运行后台任务,可以做你以后的事情,但不理解你的问题,我不能说。

5

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

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

至于后台任务,它们的活动受限于地铁应用程序,每2小时仅限于一个CPU秒(有一个例外)。推送通知可以更频繁地执行,但只能更新平铺或引发敬酒通知。

metro应用的目的是比传统的桌面应用程序不同:

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

看起来,选择metro应用程序的确意味着让一些桌面应用程序的无限力量。但是,收益也很重要。

+0

WinRT!= Metro。 – laktak 2012-11-08 14:37:59

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

相关问题