Использование изолированного хранилища сразу после запуска приложения вызывает проблемы со стабильностью - PullRequest
0 голосов
/ 10 мая 2011

Я пытаюсь добавить поддержку отслеживания использования приложения в приложение WP7 (например, сколько раз приложение запускалось, включая пробуждения от захоронения). Я думал, что делаю это довольно простым способом, но я часто получаю исключения IsolatedStorageException, и в данный момент я немного затрудняюсь с его отладкой.

Перефразируя из моего приложения. Xaml.cs

private void HandleAppCounter() {
  int i = 0;
  settings.TryGetValue<int>("usage", out i);
  i++;

  settings["usage"] = i;
  settings.Save();
}

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

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

Если приведенный выше код в HandleAppCounter () закомментирован, пользователь может щелкнуть сразу или позже, и он никогда не выйдет из строя.

Может кто-нибудь дать мне несколько советов, как это отладить? Я тут как бы врезаюсь в стену.

1 Ответ

0 голосов
/ 19 мая 2011

Я бы предложил отойти от вашей пользовательской реализации на секунду и попробовать то же самое поведение с классом IsolatedStorageSettings по умолчанию, если это все еще проблема, тогда вы должны сообщить об этом Microsoft Connect сайту как об ошибке, иначе какая-то ошибка в вашем классе настроек.

Если вы используете IsolatedStorageSettings, вы можете убедиться, что всякий раз, когда вы запрашиваете / добавляете ключ, ключ есть, если нет, вы должны его создать.

Если вы используете файловую систему IsolatedStorage, убедитесь, что вы всегда закрываете потоки при чтении / записи. Если вы этого не сделаете, вы получите абсурдные исключения.

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