Ошибка IdleDetectionMode Windows phone 7 - PullRequest
4 голосов
/ 12 мая 2011

У меня есть флажок. При проверенном событии я хочу отключить IdleDetectionMode, а при непроверенном событии я хочу включить. Это код: -

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 не может быть запущен после его отключения. Почему применяется это ограничение и что я могу сделать, чтобы обойти его?

Ответы [ 2 ]

4 голосов
/ 12 мая 2011

С 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 голосов
/ 12 мая 2011

Это по замыслу.Согласно MSDN :

В текущем выпуске обнаружение простоя приложения не может быть включено в одном экземпляре приложения после его отключения.Это вызывает исключение.

По сути, приложение определяет его характеристики, которые будут определять поведение системы и «отношение» к ней.Это плохая практика, пытаться изменить их во время работы приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...