Сериализация/десериализация двумерного массива - C#
Формулировка задачи:
Есть класс:
Есть двумерный массив экземпляров класса:
Задача:
Cериализовать данный массив, периодически повторно сериализовать его в процессе работы программы. При последующем запуске программы десериализовать и так же периодически повторять сериализацию в процессе работы.
Сериализация:
Десериализация:
Проблема:
При первом запуске программы корректно сериализует массив в файл, корректно обновляет файл. При повторном запуске программы корректно десериализует. НО!!! в процессе работы недописывает файл, обрываясь в прямом смысле на полустрочке. Отладка показывает вход в сериализацию, пропуск всех операций процедуры, идущих после сериализации и вылетание из процедуры.
Есть у кого-нибудь идеи, где собака зарыта?
[Serializable()]
public class Location
{
//реализация
} private Location[][] location;
location=new Location[180][];
for (int i = 0; i < 180; i++)
{
location[i] = new Location[114];
for(int j = 0; j < 114; j++)location[i][j] = new Location(i, j);
} XmlSerializer serializer = new XmlSerializer(typeof(Location[][]));
System.IO.FileStream writer = new System.IO.FileStream(@"map.xml", System.IO.FileMode.Create);
System.IO.StreamWriter file = new System.IO.StreamWriter(writer,Encoding.GetEncoding("windows-1251"));
serializer.Serialize(file, location);
writer.Close(); XmlSerializer serializer = new XmlSerializer(typeof(Location[][]));
System.IO.FileStream reader = new System.IO.FileStream(@"map.xml",System.IO.FileMode.Open);
System.IO.StreamReader file = new System.IO.StreamReader(reader, Encoding.GetEncoding("windows-1251"));
location=(Location[][])serializer.Deserialize(file);
reader.Close();
столько просмотров и ни одной версии
Решение задачи: «Сериализация/десериализация двумерного массива»
textual
Листинг программы
private Location[][] location;
location=new Location[180][];
for (int i = 0; i < 180; i++)
{
location[i] = new Location[114];
for(int j = 0; j < 114; j++)location[i][j] = new Location(i, j);
}