1

我有一個很大的問題。Windows Phone 8和7.1的ScheduledTaskAgent之間的區別

我爲Windows Phone 7.1+編寫了一個應用程序,它也發佈在Windows Phone Store上: 這個應用程序適用於Windows Phone 7.1和Windows Phone 8,並且在應用程序提交過程中沒有問題也聲明自Windows Phone 7.5以來,我的應用程序與任何操作系統完全兼容)。

這個問題僅與我的Scheduled Agent有關,它可以在Windows Phone Mango(7.1)上完美運行,但它在Windows Phone 8上完全不會觸發(我也在真實設備上測試過我的應用程序, OS「)。

當我升級到的Visual Studio 2012(Express,用於Windows Phone的),我注意到,這是不可能性增加兩種不同類型的ScheduledTaskAgent項目:一個用於Windows Phone的7.5,一個用於Windows Phone 8的(明顯在Visual Studio 2010中不是這樣的......而我使用唯一可用的=第一個)!

  1. 你認爲這可能是原因,而預定的代理不在WP8中工作?
  2. 這兩種項目類型有什麼區別?
  3. 如何管理(代碼中我的意思是)該類型的兩個項目?可能嗎?
  4. 如何選擇我要註冊的任務(請參閱下面的代碼)?
  5. 提交過程失敗,兩個ScheduledTaskAgent項目(我認爲是這樣)?

這是代碼的關鍵部分,當我登記我的任務啓動時:

PeriodicTask newTask = new PeriodicTask("MyTaskID"); 

newTask.Description = "my Description"; 

ScheduledActionService.Add(newTask); 

#if DEBUG 
Microsoft.Phone.Scheduler.ScheduledActionService.LaunchForTest("MyTaskID", TimeSpan.FromSeconds(5)); 
#endif 

預先感謝您。

回答

2

兩個項目類型之間唯一的區別是(1)Windows Phone 8的目標是Windows Phone 8而不是7.1,(2)它引用Windows Phone 8 SDK而不是Windows Phone 7 dll。

我有一個應用程序,我有兩個項目(7.1和8.0)。我也有兩個後臺代理項目(7.1和8.0),我使用鏈接文件在它們之間共享代碼。我參考了8.0項目的8.0代理和7.1項目的7.1代理。我使用this example作爲擁有兩種版本代碼的最佳做法。

您不想引用兩個代理,因爲這樣做不起作用。

如果您刪除#if DEBUG,您的代理在調試時會被調用嗎?

+0

謝謝你的鏈接:非常有趣。所以擁有WP7.1和WP8的ScheduledTaskAgent的唯一方法是擁有4個項目?這不是很容易進行維護和測試......特別是當您在視圖中修改某些內容時! :( – MAXE

+0

你將有4個項目,但你應該只有一個文件每個視圖,其他人應該只是鏈接。 – Bryant

0

首先確保您在應用清單文件中獲得了正確的引用。

<ExtendedTask Name="BackgroundTask"> 
    <BackgroundServiceAgent Specifier="ScheduledTaskAgent" Name="MyApp.Agent" Source="MyApp.Agent" Type="MyApp.Agent.ScheduledAgent" /> 
</ExtendedTask> 

其次代理庫必須在主應用程序項目中引用。
第三,確保你沒有超過允許的運行時間或內存分配。在WP8中,後臺代理的上限提高到了11MB。此外,註冊後臺任務的應用程序也有限制,因此您的任務可能無法使用bg代理進行任務。

相關問題