2012-01-17 2 views
1

Недавно я представил небольшое приложение, работающее на платформе Silverlight. Но мое приложение было отклонено с рынка из-за ошибки 5.2.3. I.e Реактивность приложения после деактивации. Что я нашел: После того как пользователь успешно завершает игру (головоломка), я показываю ему диалог:Реактивность приложения после деактивации: ошибка 5.2.3

MessageBoxResult mr = MessageBox.Show("You have won! Do you want to start another game?", "Information", MessageBoxButton.OKCancel); 
if(mr==MessageBoxResult.Cancel) 
{ 
    NavigationService.GoBack(); 
} 

Теперь точка - Если пользователь нажимает кнопку запуска после этого диалогового окна отображается, приложение перестает бросать исключение -
Навигация не разрешается, если задача не находится на переднем плане. Ошибка: -2147220990

Мне кажется достоверной ошибкой, хотя я не уверен, как мои другие приложения успешно прошли сертификационный процесс, хотя у них был тот же недостаток. Я только что начал разрабатывать приложения WP, поэтому у меня нет много знаний о том, что нужно делать. Пожалуйста, не могли бы вы мне помочь.

+0

проверки NavigationService.CanGoBack первым. –

+1

@willmel это не сработает, когда деактивировано NavigationService.CanGoBack все равно сообщит об этом. – ColinE

+0

@ColinE, тем не менее, он все равно должен быть проверен первым. –

ответ

2

Не похоже, что в этом случае есть простой тест. Похоже, что MessageBox отменяется до того, как будет запущено событие Deactivated, поэтому я не вижу возможности проверить это состояние.

Мое предложение было бы обнаружить и проглотить конкретное исключение:

MessageBoxResult mr = MessageBox.Show("You have won! Do you want to start another game?", "Information", MessageBoxButton.OKCancel); 
    if (mr == MessageBoxResult.Cancel) 
    { 
    try 
    { 
     NavigationService.GoBack(); 
    } 
    catch (InvalidOperationException e) 
    { 
     // occurs if message box closed due to de-activation 
    } 
    } 
+0

Приложение получает tombstombed перед этим исключением. При нажатии кнопки «Назад» я должен вернуться в это состояние (т. Е. С открытием диалогового окна). Итак, как мне с этим справиться? – letsc

+0

Используя шаблон MVVM, установите свойство в ViewModel, чтобы указать, что MessageBox был открыт. Вы можете узнать, когда сохранить состояние модели просмотра для обработки событий жизненного цикла WP7 здесь: http://www.scottlogic.co.uk/blog/colin/2011/10/a-windows-phone-7-1-mango- MVVM-tombstoning-пример / – ColinE

Смежные вопросы