2011-09-05 46 views
2

我正在使用background-agent更新實時平鋪的Windows Phone 7應用程序。我遇到的問題與禁用和重新啓用後臺代理有關。用戶可以在設置下禁用特定應用程序的背景代理(設置 - 應用程序 - 後臺任務)。在Windows Phone 7上重新啓用禁用後臺代理的問題芒果

如果後臺代理被禁用,我得到的消息,一個InvalidOperationException的預期行爲「BNS錯誤:將不起任何作用」如果我嘗試使用下面的代碼來安排代理:

ScheduledActionService.LaunchForTest(PeriodicTaskName, TimeSpan.FromSeconds(20));  

如果用戶回到設置菜單並勾選複選框「」下次打開此應用程序時,請重新打開後臺任務「我仍然收到相同的異常。

所以我的問題是如何執行已重新啓用的任務?

MSDN documentation描述了禁用任務的行爲,但現在又介紹瞭如何再次啓用它們。

+0

只是猜測,但操作系統是否自動爲您重新開啓後臺任務,然後您的呼叫因爲已啓用而失敗? –

回答

0

首先,您不應該在調試場景之外調用ScheduledActionService.LaunchForTest

其次,只有3個原因,計劃任務,可以禁用

  1. 用戶禁用它手動
  2. 手機跑出去的力量,並使用電池保護程序啓動。當有足夠的電源時,下次啓動應用程序時,任務將重新啓用。
  3. 您的任務沒有撥打NotifyComplete(),因此它被禁用。

在3.的情況下,您必須重新創建任務。這通常意味着用戶從您的應用程序重新創建實時拼貼。當然不是推薦!

所以我建議你通過你的代碼並確保NotifyComplete()總是叫,以及停止使用ScheduledActionService.LaunchForTest

+0

我知道LaunchForTest限制(如果沒有,我會得到與「BNS錯誤:操作被禁用」不同的異常 正如我在問題中所描述的,這是一種情況1 - 用戶已禁用它,並且然後再啓用它,所以當我枚舉所有可以找到它的任務時,但是「IsEnabled」標誌設置爲true(即使用戶已經點擊以再次啓用任務) –

+0

那麼,你的* actual *問題是什麼那麼? –

+0

呵呵 - 爲什麼IsEnabled設置爲false,即使用戶在設置菜單下再次啓用它 –

相關問題