Форум программистов, компьютерный форум CyberForum.ru

Сохранение данных, Сериализация - Windows Phone

Восстановить пароль Регистрация
Другие темы раздела
Windows Phone Не могу найти свое приложение на wp в магазине http://www.cyberforum.ru/windows-phone-dev/thread1664250.html
Приложение полностью прошло проверку и на сайте Microsoft developer center пишет что приложение загружено в магазин, однако при поиске не находит приложение. В чем может быть проблема?
Windows Phone Ориентация (поворот) элемента WebView Всем привет. Уже второй день пытаюсь повернуть и расположить элемент WebView в альбомной ориентации (Приложение работает только с портретной). Windows Phone 8.1 (xaml) <Page x:Name="page" x:Class="My_App_1.BlankPage2" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:My_App_1" ... http://www.cyberforum.ru/windows-phone-dev/thread1662408.html
Windows Phone Рейтинги игроков
Всем привет. Предоставляет ли майкрософт сервисы для организации внутриигрового рейтинга игроков аналогичные существующим сервисам гугла?
Windows Phone Приложение на Windows Phone
Доброго времени суток! Пишу приложение на WP 8.1, скажите или скиньте какие нибудь ссылки, как написать программу так, чтобы оно всегда работало в фоновом режиме? (А еще скажите пожалуйста, вот мы создаем браслет с помощью которого на экран выводятся данные о владельце (если вкратце объяснять), как можно вывести данные через блокировку телефона??)Спасибо заранее.
Windows Phone Программное включение экономии заряда http://www.cyberforum.ru/windows-phone-dev/thread1658109.html
Доброго времени суток! Подскажите пожалуйста как запрограмировать включение функции экономии заряда при выполнении определенного условия. Большое спасибо за помощь.
Windows Phone Nuget Подскажите пожалуйста, я зашла в консоль диспетчера Nuget, установила пакет Install-Package WinRTXamlToolkit.Windows, в ссылках появилось это(после сохранения ссылка перестала отображаться), но в панели элементов, как не было, так и нет нужных AutoCompleteTextBox и всего прочего((Почему? Кстати,в корневой папке пакет отобразился. подробнее

Показать сообщение отдельно
bodynar
136 / 136 / 41
Регистрация: 14.03.2015
Сообщений: 581
Записей в блоге: 1
Завершенные тесты: 3
18.02.2016, 00:18     Сохранение данных, Сериализация
Доброго времени суток.

Имеются вопрос и проблема.

Вопрос: В какой момент работы приложения лучше сохранять данные?
В моем варианте простое приложение по кнопке и заполненным полям добавляет объекты в коллекцию.
По опыту ПК-шных приложений привык сохранять данные перед закрытием приложения (окна\формы\страницы), тут же попробовал также. Кинул обработчик на кнопку "Назад" (ну, ту, которая на всех телефонах)
C#
1
HardwareButtons.BackPressed += HardwareButtonsBackPressed;
И использую код, приведенный ниже (честно скомуниздил написал по примеру многих статей)
Loading
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
async void LoadObject(StorageFile Path)
        {
            using (var readerStream = await Path.OpenStreamForReadAsync())
            {
                var Serializer = new XmlSerializer(ObjCollection.GetType());
                try
                {
                    ObjCollection = (ObservableCollection<Purchase>)Serializer.Deserialize(readerStream);
                }
                catch (Exception e)
                {
                    ShowMessage(string.Format("Exception: {0}\n{1}", e.InnerException, e.Message));
                }
            }
        }
 
        internal async void LoadData(string Path)
        {
            var AppStorage = ApplicationData.Current.LocalFolder;
 
            File = await AppStorage.CreateFileAsync(Path, CreationCollisionOption.OpenIfExists);
 
            var file = await FileIO.ReadTextAsync(File, Windows.Storage.Streams.UnicodeEncoding.Utf8);
 
            if (file.Length > 1)
                LoadObject(File);
 
            if (ObjCollection == null)
                ObjCollection = new ObservableCollection<Purchase>();
        }

Saving
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
internal async void SaveData(StorageFile Path)
        {
            using (var writterStream = await Path.OpenStreamForWriteAsync())
            {
                var Serializer = new XmlSerializer(ObjCollection.GetType());
 
                try
                {
                    Serializer.Serialize(writterStream, ObjCollection);
                }
                catch (Exception e)
                {
                    ShowMessage(string.Format("Exception: {0}\n{1}", e.InnerException, e.Message));
                }
            }
        }


И вызываю метод сохранения (сериализации в смысле) в обработчике BackPressed. Приложение уходит в фон (в диспетчере его видно), сама студия продолжает работать, но ничего не происходит. Выключаю отладку в студии (VSE15) и запускаю заного и сразу ловлю ошибку сериализации (битый XML файл).

Отсюда вытекает вопрос о том, правильно ли я делаю сериализацию в файл? (Вроде бы по примеру, но ничего толком не работает).

Также появилась навязчивая идея сохранять данные после каждого его изменения. (но заработает же все!)

Добавлено через 2 часа 11 минут
Проблема решена (магическим образом)

Цитата Сообщение от bodynar Посмотреть сообщение
C#
1
var Serializer = new XmlSerializer(ObjCollection.GetType());
NullReferenceException в данном месте был, хотя показывало как XmlSerializerException

Добавлено через 2 часа 53 минуты
Вопрос все также актуален в силу моей криворукости.
Цитата Сообщение от bodynar Посмотреть сообщение
Вопрос: В какой момент работы приложения лучше сохранять данные?
После изменения данных или при выходе приложения?
C#
1
HardwareButtons.BackPressed += HardwareButtonsBackPressed;
C#
1
2
3
4
5
6
private void HardwareButtonsBackPressed(object sender, BackPressedEventArgs e)
        {
            Controller.Save();
            
            Application.Current.Exit();
        }
Отрабатывает не так идеально, как хотелось бы (приложение закрывается, но студия некоторое время после (минуты полторы) показывает, что оно запущено ещё).
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru