Обновления в Lers Framework R23

Уважаемые разработчики!

В ЛЭРС УЧЁТ версии 3.07 R23 мы продолжаем перевод Lers Framework на технологию асинхронных вызовов async/await.

Мы стараемся максимально соблюсти совместимость, но некоторые методы заставляют нас тратить слишком много сил на их поддержку, поэтому от них мы вынуждены отказаться.

Ниже будет перечислен список методов, которые нельзя будет использовать в синхронном виде или в старом асинхронном (с указанием метода обратной связи).

EditableRecord.Save();
EditableRecord.Delete();
EditableRecord.Delete(bool)

Теперь сохранение и удаление любых объектов должно выполняться только асинхронными методами SaveAsync и DeleteAsync.

То есть код, который выглядел так:

Node node = /*получение объекта учёта*/;
node.Title = "new title";

// Синхронный вызов
node.Save();

// ... или асинхронный вызов
node.Save(callbackMethod, userState);

Должен быть переписан следующим образом:

Node node = /*получение объекта учёта*/;
node.Title = "new title";

// Асинхронный вызов
await node.SaveAsync();

Обращаем ваше внимание на то, что попытка синхронно ожидать завершения задачи в приложении с оконным интерфейсом приведёт к зависанию. Это не ошибка Lers Framework, а особенность реализации асинхронных вызовов в GUI-приложениях. Синхронно ожидать завершения задания можно только в консольных приложениях и программах без интерфейса пользователя (например, системные службы).

В R23 новые асинхронные методы появились у множества классов. Старые при этом были отмечены как устаревшие и при компиляции проекта выдадут предупреждение “CS0612 ‘method’ is obsolete”.