2012-04-26 140 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

相關問題