Подписка на событие и прекращение
Для того, чтобы работать с событием необходимо создать его обработчик и связать его с объектом, для которого вы хотите отловить соответствующее событие. После завершения работы с отловом событий рекомендуется убрать этот обработчик, чтобы минимизировать конфликты с обработчиками других функций и приложений, уменьшить использование системных ресурсов CAD-средой.
Подписка на событие
Подписка на событие осуществляется добавлением нового обработчика для события. Обработчик требует некоторой процедуры, которая определена где-либо в вашем проекте (как правило, это некоторый метод класса). Большинство типов обработчиков в основном требуют 2 аргумента -- первый типа object, а второй -- возвращаемые аргументы для данного события. Регистрация события осуществляется с помощью оператора "+=" в C#
В приведенном ниже коде регистрируется процедура с именем appSysVarChanged для события SystemVariableChanged. Процедура appSysVarChanged принимает два параметра: Object и SystemVariableChangedEventArgs. Объект SystemVariableChangedEventArgs возвращает имя системной переменной, измененной при регистрации события.
Отмена подписки на событие
Для отмены события необходимо удалить привязанный к нему обработчик, используется тот же синтаксис, что и для добавления события, за исключением того, что оператор для удаления для C# это -=. Пример ниже содержит загружаемый в приложение класс, в теле метода Initialize происходит подписка на событие, а в теле Terminate -- отмена подписки.
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
public class Loader : IExtensionApplication
{
public void Initialize()
{
Application.SystemVariableChanged +=
new SystemVariableChangedEventHandler(appSysVarChanged);
}
public void Terminate()
{
Application.SystemVariableChanged -=
new SystemVariableChangedEventHandler(appSysVarChanged);
}
private void appSysVarChanged(object sender, SystemVariableChangedEventArgs e)
{
//...
}
}