2011-05-12 94 views
4

我有一個複選框。在它的檢查事件我想關閉IdleDetectionMode和我想打開未經檢查的事件。這是代碼: -IdleDetectionMode錯誤Windows phone 7

private void chkRunInBackground_Checked(object sender, RoutedEventArgs e) 
     { 
      PhoneApplicationService.Current.ApplicationIdleDetectionMode = IdleDetectionMode.Disabled; 

     } 

     private void chkRunInBackground_Unchecked(object sender, RoutedEventArgs e) 
     { 
      PhoneApplicationService.Current.ApplicationIdleDetectionMode = IdleDetectionMode.Enabled; 

     } 

選中的事件運行良好,但在未經檢查的情況下我得到的,IdleDetection模式不能啓動,一旦它被禁用。爲什麼應用這個限制,我能做些什麼來解決它?

回答

4

MSDN

在當前版本中,應用 空閒檢測可一旦 已被禁用不能在 單個應用程序實例啓用。這樣做會引發 異常。在將來的版本中,可能會支持 ,因此您的應用程序可能會在 選擇禁用應用程序空閒 檢測時不再需要 並捕獲預期的異常。

以下代碼片段顯示了這個的實現。

// Custom function to turn off idle detection. This will throw an exception in the current release. 
public void TryReenableApplicationIdleDetection() 
{ 
    bool didEnable = false; 
    try 
    { 
     Microsoft.Phone.Shell.PhoneApplicationService.Current.ApplicationIdleDetectionMode = 
      Microsoft.Phone.Shell.IdleDetectionMode.Enabled; 
     didEnable = true; 
    } 
    catch (InvalidOperationException ex) 
    { 
     // This exception is expected in the current release. 
    } 

    // possibly use the value of didEnable to decide what to do next 
    // if it is 'true' then your app will be deactivated 
    // if it is 'false' then your app will keep running 
} 
2

這是設計。按MSDN

在當前版本中,應用 空閒檢測不能在 單個應用程序實例一旦 已被禁用啓用。這樣做會引發 異常。

基本上,應用程序定義了它的特性,它將決定系統的行爲和對它的態度。在應用程序運行時嘗試和更改這些是不好的做法。