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

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

. Чем воспользоваться чтоб полу
чилось нечто вот такое?. Или вопрос не решаем и нужно делать Undo нормальным способом? Спасибо.
Здравствуйте, Svoyak, Вы писали:
S>Как перейти на использование файлов? Т.е. мне нужно будет каждый новый шаг дописывать во временный файл, а при восстановлении найти и извлечь
S>конкретный требуемый шаг, причем извлекать все подряд наверняка не получится так как долго
. Чем воспользоваться чтоб полу
S>чилось нечто вот такое?. Или вопрос не решаем и нужно делать Undo нормальным способом? Спасибо.
Можно использовать структурированное хранилище или записывать модель каждый раз в новый файл.
Здравствуйте, Svoyak, Вы писали:
S>День добрый!
S>Проект WPF .NET 3.5. Используется MVVM. Возникла необходимость сделать функциональность Undo Redo и чтоб можно было
S>восстановить произвольное промежуточное состояние. В принципе получилось.
S> После каждой нужной операции Модель сериализуется, результат хранится в списке и по необходимости восстанавливается.
S>Сериализация делается в MemoryStream. Теперь о граблях. Как я и предполагал сначала, кушается много памяти.
. Как перейти на
S>использование файлов? Т.е. мне нужно будет каждый новый шаг дописывать во временный файл, а при восстановлении найти и извлечь
S>конкретный требуемый шаг, причем извлекать все подряд наверняка не получится так как долго
. Чем воспользоваться чтоб полу
S>чилось нечто вот такое?. Или вопрос не решаем и нужно делать Undo нормальным способом? Спасибо.
чисто навскидку (могу быть неправ): а что если подписаться на PropertyChanged всех свойств и лог хранить в виде записей "свойство — новое значение". Тогда писаться будут только изменения и их достаточно легко откатить
Здравствуйте, Svoyak, Вы писали:
S>День добрый!
S>Проект WPF .NET 3.5. Используется MVVM. Возникла необходимость сделать функциональность Undo Redo и чтоб можно было
S>восстановить произвольное промежуточное состояние. В принципе получилось.
S> После каждой нужной операции Модель сериализуется, результат хранится в списке и по необходимости восстанавливается.
S>Сериализация делается в MemoryStream. Теперь о граблях. Как я и предполагал сначала, кушается много памяти.
. Как перейти на
S>использование файлов? Т.е. мне нужно будет каждый новый шаг дописывать во временный файл, а при восстановлении найти и извлечь
S>конкретный требуемый шаг, причем извлекать все подряд наверняка не получится так как долго
. Чем воспользоваться чтоб полу
S>чилось нечто вот такое?. Или вопрос не решаем и нужно делать Undo нормальным способом? Спасибо.
Паттерн Command позволяет это сделать.