Управление памятью в рамках отмены/повтораC#

Место общения программистов C#
Ответить
Anonymous
 Управление памятью в рамках отмены/повтора

Сообщение Anonymous »

Я занимаюсь реализацией функции отмены/повтора для сегмента моего программного обеспечения, разработанного на C#. Данные, над которыми выполняется операция отмены или повтора, хранятся в виде списка объектов List. В некоторых случаях размер списка может стать большим (>1 КБ).

Я хочу, чтобы пользователь отменил/повторил действие столько раз, сколько сможет. Но если я просто сохраняю все предыдущие состояния (как в шаблоне Memento), это может привести к тому, что программа будет использовать слишком много памяти, чего я не хочу.

Список решений, которые я придумал:
  • Сохраните состояния где-нибудь в файле и читайте только несколько состояний за раз. Таким образом, я не буду использовать много оперативной памяти, но чтение и запись в файл могут занять много времени (вероятно, придется запустить его в другом потоке).
  • Вычислите разницу между два последовательных состояния и вместо этого сохраните их. Например, UNDO: DEL LIST[5] & REDO: INSERT LIST[5]
Каковы еще эффективные способы реализации функций отмены/повтора и как они соотносятся с решениями, приведенными выше?

Подробнее здесь: https://stackoverflow.com/questions/496 ... -framework
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»