Неожиданное поведение с изолированным хранилищем в WP7 - PullRequest
0 голосов
/ 27 апреля 2011

Я получаю неожиданное поведение при использовании изолированного хранилища. В этом случае я использую его для поддержания состояния с целью захоронения.

Это приложение для практики лицензирования Ham Radio. Вот что происходит. Когда приложение запускается в первый раз, пользователь находится на главной странице и выбирает одну из двух ссылок OptionPage1 или OptionPage2 (они работают аналогично, поэтому я остановлюсь только на одной). На OptionsPage1 пользователь выбирает из нескольких вариантов, затем нажимает кнопку «Запуск», чтобы перейти к ExamPage, где пользователь отвечает на вопросы. По завершении экзамена пользователь переходит на ScorePage, чтобы увидеть результат. Когда закончите с этим, один из вариантов - нажать кнопку, чтобы вернуться на главную страницу.

Каждый раз, когда пользователь выбирает какое-либо действие, файл в изолированном хранилище обновляется статическими методами в изолированной библиотеке классов обработки хранилища. Я наблюдал действительно странное поведение. Когда ScorePage сохраняет свое состояние, когда пользователь щелкает, чтобы вернуться на MainPage, он сохраняет местоположение как «MainPage», потому что именно там пользователь будет находиться в следующую миллисекунду. Однако, когда MainPage считывает изолированный файл хранилища, который был только что сохранен ScorePage, он не имеет того содержимого, которое сохранял ScorePage! Содержит содержимое, которое было сохранено OptionPage1 !! Я знаю, что ScorePage правильно сохраняет информацию, потому что я попытался прочитать ее сразу после сохранения, и все было в порядке.

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

1 Ответ

0 голосов
/ 27 апреля 2011

Cyberherbalist, я не уверен, что если вы используете это (я предполагаю, что вы или ваше приложение столкнется с некоторыми серьезными проблемами с навигацией), то есть gotcha , когда работа с Нелинейной навигационной службой . В основном, если вы сохраняете в файл, используя обработчики событий OnNavigatedTo или в некоторых случаях OnNavigatedFrom ваши записи поверх ранее сохраненного содержимого. Другими словами, все, что делает служба, - это вызывает метод GoBack (), и в этом случае вы запускаете метод, чтобы снова сохранить его в файл.

Вот как это работает:

Домашняя страница -> Страница параметров -> Страница экзамена -> Страница показателей

Теперь, когда вы вернетесь на главную страницу, это действительно то, что происходит:

Домашняя страница <- OptionsPage <- ExamPage <- ScorePage </strong>

Если это так, создайте глобальную переменную в файле App.xaml.cs, в которой будет храниться информация о том, сдан ли экзамен или нет. Затем перейдите на любые страницы сохраняемого контента и проверьте с помощью оператора «if», чтобы определить, переходите ли вы на следующую страницу в процессе или вы возвращаетесь на домашнюю страницу. Также убедитесь, что после сохранения в файле на ScorePage вы задали глобальную переменную для завершения экзамена.

...