Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка при десериализации? 
V
    Опции темы
Alekz
Дата 8.10.2008, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 5.2.2008
Где: Запорожье, Украин а

Репутация: 1
Всего: 2



Добрый день.

Уже довольно долго эта часть приложения работала нормально. И вообще ничего похожего я еще не видел...

Суть проблемы:
Приложение сохраняет информацию в файл и при запуске ее восстанавливает.
В файле храниться коллекция (System.ArrayList) одинаковых объектов.
Код сохранения в файл:
Код

                    FileStream fs = null;
                    fs = new FileStream(_filename, FileMode.OpenOrCreate);
                    BinaryFormatter bf = new BinaryFormatter();
                    bf.Serialize(fs, _tasks);//В моем случае _tasks содержит 2 объекта  типа Task
                    fs.Close();


Код восстановления из файла:
Код

                    FileStream fs = new FileStream(_filename, FileMode.Open, FileAccess.Read);
                    BinaryFormatter bf = new BinaryFormatter();
                    _tasks = bf.Deserialize(fs) as ArrayList;


Восстановление проходит корректно, но при попытке обращения к восстановленным объектам (конкретно - только ко второму) вылетает NullReferenceException...
При сохранении объекты были нормальными.
И вот самое интересное QuickWatch для обоих объектов

user posted image
Первый объект восстановлен правильно

user posted image
Второй объект как то странно... Поля загрузились нормально, но половина свойств не вычислилась.
При этом код десериализации НЕ кинул исключения. 


Внимание вопрос:
Кто-то с таким сталкивался?
И что вообще могло произойти?

Это сообщение отредактировал(а) Alekz - 8.10.2008, 10:30
PM MAIL   Вверх
Zakonnic
Дата 8.10.2008, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 25.4.2006

Репутация: 2
Всего: 6



Эээээ... То есть ошибка в том, что не десериализуются только некоторые свойства объекта? Они равны null?
Просто сообщение "Function evaluation timed out" частенько выдается дебагером, если QuickWatch просто подержать открытым некоторое время. Точно не знаю, от чего это зависит.
--------------------
...и никогда не пишите в комментариях правду
PM MAIL ICQ   Вверх
Alekz
Дата 8.10.2008, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 5.2.2008
Где: Запорожье, Украин а

Репутация: 1
Всего: 2



QuickWatch открываю сразу после десериализации.

NullReference кидают все обращения к свойствам (с восклицательными знаками) второго объекта.

Попутно я нашел место откуда кидается исключение:
в одном из свойств перебирается внутренняя коллекция (ArrayList заполненный DateTime).
В этой коллекции одно значение равно null, т.е. NullReference вылетает при Unboxing.

Скорее всего - ошибка была допущена раньше, при создании объекта.
Попробую воспроизвести.

Вопрос решен.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0394 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.