Запись/чтение из файла с произвольным доступом.
От: Svoyak  
Дата: 31.05.11 13:46
Оценка:
День добрый!
Проект WPF .NET 3.5. Используется MVVM. Возникла необходимость сделать функциональность Undo Redo и чтоб можно было
восстановить произвольное промежуточное состояние. В принципе получилось.
После каждой нужной операции Модель сериализуется, результат хранится в списке и по необходимости восстанавливается.
Сериализация делается в MemoryStream. Теперь о граблях. Как я и предполагал сначала, кушается много памяти.. Как перейти на
использование файлов? Т.е. мне нужно будет каждый новый шаг дописывать во временный файл, а при восстановлении найти и извлечь
конкретный требуемый шаг, причем извлекать все подряд наверняка не получится так как долго. Чем воспользоваться чтоб полу
чилось нечто вот такое?. Или вопрос не решаем и нужно делать Undo нормальным способом? Спасибо.
Re: Запись/чтение из файла с произвольным доступом.
От: Lao Украина  
Дата: 31.05.11 14:17
Оценка:
Здравствуйте, Svoyak, Вы писали:


S>Как перейти на использование файлов? Т.е. мне нужно будет каждый новый шаг дописывать во временный файл, а при восстановлении найти и извлечь

S>конкретный требуемый шаг, причем извлекать все подряд наверняка не получится так как долго. Чем воспользоваться чтоб полу
S>чилось нечто вот такое?. Или вопрос не решаем и нужно делать Undo нормальным способом? Спасибо.

Можно использовать структурированное хранилище или записывать модель каждый раз в новый файл.
Re: Запись/чтение из файла с произвольным доступом.
От: vladpol Украина http://vlad-mislitel.livejournal.com/
Дата: 31.05.11 14:45
Оценка:
Здравствуйте, Svoyak, Вы писали:

S>День добрый!

S>Проект WPF .NET 3.5. Используется MVVM. Возникла необходимость сделать функциональность Undo Redo и чтоб можно было
S>восстановить произвольное промежуточное состояние. В принципе получилось.
S> После каждой нужной операции Модель сериализуется, результат хранится в списке и по необходимости восстанавливается.
S>Сериализация делается в MemoryStream. Теперь о граблях. Как я и предполагал сначала, кушается много памяти.. Как перейти на
S>использование файлов? Т.е. мне нужно будет каждый новый шаг дописывать во временный файл, а при восстановлении найти и извлечь
S>конкретный требуемый шаг, причем извлекать все подряд наверняка не получится так как долго. Чем воспользоваться чтоб полу
S>чилось нечто вот такое?. Или вопрос не решаем и нужно делать Undo нормальным способом? Спасибо.

чисто навскидку (могу быть неправ): а что если подписаться на PropertyChanged всех свойств и лог хранить в виде записей "свойство — новое значение". Тогда писаться будут только изменения и их достаточно легко откатить
С уважением, Владислав Полищук
Re: Запись/чтение из файла с произвольным доступом.
От: out-of-the-way США www.tehnoromantik.net
Дата: 31.05.11 18:04
Оценка:
Здравствуйте, Svoyak, Вы писали:

S>День добрый!

S>Проект WPF .NET 3.5. Используется MVVM. Возникла необходимость сделать функциональность Undo Redo и чтоб можно было
S>восстановить произвольное промежуточное состояние. В принципе получилось.
S> После каждой нужной операции Модель сериализуется, результат хранится в списке и по необходимости восстанавливается.
S>Сериализация делается в MemoryStream. Теперь о граблях. Как я и предполагал сначала, кушается много памяти.. Как перейти на
S>использование файлов? Т.е. мне нужно будет каждый новый шаг дописывать во временный файл, а при восстановлении найти и извлечь
S>конкретный требуемый шаг, причем извлекать все подряд наверняка не получится так как долго. Чем воспользоваться чтоб полу
S>чилось нечто вот такое?. Или вопрос не решаем и нужно делать Undo нормальным способом? Спасибо.

Паттерн Command позволяет это сделать.
Программа — мысли спрессованные в код.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.