2013-01-05 26 views
0

我有一個Windows 8 metro應用程序,它顯示每分鐘刷新的活動瓷磚上的數據。w8地鐵活瓷磚不會在電腦重新啓動後生成動畫

地鐵應用程序啓動時,它會創建一個序列來執行磁貼更新。這工作完美。

問題:

當我重新啓動我的電腦地鐵瓷磚停止工作。相反,它會返回到默認的metro磁貼(應用名稱左下圖中間)。

我可以通過簡單地啓動和停止地鐵應用程序再次運行它。但我不想這樣做。

我實現了一個實現IBackgroundTask並實現run方法的類。

public void Run(IBackgroundTaskInstance taskInstance){ 
    BackgroundTaskDeferral deferral = taskInstance.GetDeferral(); 
    TileScheduler.CreateSchedule(); 
    deferral.Complete(); 
} 

在地鐵應用程序包清單中添加聲明「後臺任務」,並在入口點指向這個類。我也註冊計時器和系統事件。

這個類代碼基本上調用了主應用程序在首次設置tile序列時所做的相同代碼路徑,只是它使用延遲進行了包裝。

問題 這是正確的路徑(因爲它似乎沒有工作,所以我想我的實現是錯誤的)?還是有更好的方法來做到這一點?

回答

1

這可能只是「你不能用模擬程序做到這一點」的情況。我假設你是通過在Visual Studio中使用開發人員許可證運行應用程序來完成此操作的。我瞭解瓷磚更新如何工作(糾正我,如果我錯了),但瓷磚輪詢一個網站,以獲得下一個項目顯示。既然你已經彈出你的盒子,任何視覺工作室分裂像ASP.net主機等服務將不會運行,所以瓦片將無法獲得其新的更新。

如果您想在部署到商店之前測試功能,我建議在您的項目中將Web服務部署到IIS而不是測試環境並配置IIS以在啓動時託管該服務。

+0

hey 看起來很符合你的意思,我不使用IIS服務,但很快就會運行一次發佈檢查,看看它是否存在調試環境問題。 非常感謝您的幫助 –

+0

哦,您可以嘗試的另一件事是用模擬器運行您的應用程序。我注意到,如果我在模擬器中做了關閉我的應用程序的手勢,那麼我的調試會話已完成,但我的WCF服務至少保持活動狀態。當我回到模擬桌面時,我可以再次啓動我的應用程序,它就像是一個新的會話,但Visual Studio並不知道我仍在玩我的項目。例如,可以很好地查看數據持續存在。如果您關閉應用程序,再次啓動應用程序,然後返回到開始菜單,您可以查看自己的平鋪應用程序是否在「重新啓動」。 – Mike

+1

Damm我以爲這會工作,但模擬器不會讓我添加後臺任務。 不知道爲什麼微軟限制這一點,因爲這是罰款前RC。 「WinRT信息:在模擬器中運行此應用程序時,您無法更改後臺任務並鎖定屏幕權限。」 我們很快就發佈了測試版,我想我只需要在後臺任務部分中預算更多的時間來處理錯誤:D –