Здравствуйте, tarkil, Вы писали:
А>>Программа реализует набор комманд, доступных через элементы меню.
А>>(например File.Open File.New File.Close File.Save ...) Число комманд достаточно большое ~100
А>>При этом при активации отдельных элементов возможно изменение состояния других элементов.
T>Во-первых, идея, чтоб состояние одного пункта меню зависело от состояния другого пункта меню — архисомнительная. Навесить себе тут циклическую зависимость — как два байта переслать.
Согласен.
T>Во-вторых, есть надёжный и простой способ обновления — обновлять их просто по таймеру. При этом, правда, приходится заботиться о том, чтобы в начале каждого обработчика команды был дубликат проверки. Но об этом я бы позаботился независимо от механизма обновлений — просто для надёжности.
Это по-моему тоже не самый нормальный способ. На мой взгляд правельней делать примерно следующим образом:
1. Заводим класс отвечающий за состояние системы, сгребаем туда всё относящееся к текущему состоянию + события на изменение всего чего туда надобавляли.
2. Команды подписываются на события и при наступлении события изменяют свое состояние.
ЗЫ. Немного запутано наверно, но если надо можно на конкретном примере разобрать.
... << RSDN@Home 1.2.0 alpha rev. 652>>