Не приходят события IVersionEvents

0 голосов
спросил 12 Ноя, 09 от -3A- (5,220 баллов) в категории Программные продукты Esri
Как ПРАВИЛЬНО подписаться на события о версиях?

Я уж и через WorkspaceExtension пробовал, и в своих классах по букварям с сайта ESRI на события подписывался - не выходит каменный цветок image

Ни в какую эти события не приходят.


class EventListener
{
private void OnRedefineVersion(string oldVersionName, string newVersionName)
{
}

public EventListener(IWorkspace workspace)
{
    IVersion version = workspace as IVersion;
    IVersionEvents_Event ve = version as IVersionEvents_Event;

    ve.OnRedefineVersion += OnRedefineVersion;
}
}

private void SetupVersionEventHandlers()
{
EventListener el = new EventListener(_Workspace);
}


вот примерно так делаю
обработка ошибок удалена для краткости

3 Ответы

0 голосов
ответил 16 Ноя, 09 от -3A- (5,220 баллов)
неужели никто здесь не писал обработчики для версионных баз :(

запарился я уже с этой бедой


public class MyWorkspaceExtension : IWorkspaceExtension,
                                    IWorkspaceExtensionControl,
                                    IVersionEvents
{
...
}


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

что делать-то?
как заставить ArcGIS вызывать мои обработчики?

на форумах ESRI по этому поводу тоже полное молчание
0 голосов
ответил 18 Ноя, 09 от Grigoriy (127,020 баллов)
А где Вы их ловить-то пытаетесь?
События будут приходить в момент редактирования, т.е. или в IWorkspaceEdit или в Editor.
И предназначены для отлавливания конфликтов.

http://resources.esri.com/help/9.3/arcgisdesktop/ArcObjects/esrigeodatabase/IVersionEvents2.htm

http://resources.esri.com/help/9.3/ArcGISDesktop/ArcObjects/esrigeodatabase/IWorkspaceEdit.htm
0 голосов
ответил 19 Ноя, 09 от -3A- (5,220 баллов)
насчет IVersionEvents.OnConflictsDetected и IVersionEvents.OnReconcile я согласен

а вот насчет OnRedefineVersion и OnRefreshVersion - непонятки
вроде они к процессу редактирования не имеют прямого отношения

в принципе, все, что мне надо: отловить момент смены версии
то есть когда пользователь делает какую-то версию активной - и вот этот момент я никак не могу поймать

я думал, что это делается через IVersionEvents.OnRedefineVersion, но похоже, что это не так (не зря, видимо, меня смущало название метода image )

вот и вопрос: как мне отловить смену пользователем версии в ArcMap?

мда уж, до чего ж нелогично сделаны многие вещи в ArcGIS
image
нашел я кое-как уведомление о смене версий
оказалось, что оно проживает в IMapEvents
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...