Список форумов www.integro.ru www.integro.ru
ЦСИ ИНТЕГРО
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Очередной вопрос о самописных модулях

 
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков
Предыдущая тема :: Следующая тема  
Автор Сообщение
Николаускас



Зарегистрирован: 27.11.2013
Сообщения: 52

СообщениеДобавлено: Вт 21 Янв 2014 14:47    Заголовок сообщения: Очередной вопрос о самописных модулях Ответить с цитатой

Здравствуйте!
Суть моего вопроса в следующем.
Я пишу модуль на C# в Visual Studio. В момент создания в vbs-коде модуля ИнГео объекта ранее зарегистрированного типа DLL этого типа становится занятой самой геоинформационной системой. И, например, если при этом в Visual Studio я внесу какое-либо изменение в c#-коде и попытаюсь собрать проект, студия собрать его не сможет, так как не сможет получить доступ к уже занятой ИнГео DLL.
Скажите, как мне освободить DLL после остановки модуля в ИнГео?
В метод Done пытался воткнуть Marshal.FinalReleaseComObject(application);
Не помогает.

Помогает только завершение работы самой ИнГео.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
APopov



Зарегистрирован: 19.06.2006
Сообщения: 347
Откуда: Самара

СообщениеДобавлено: Вт 21 Янв 2014 17:52    Заголовок сообщения: Ответить с цитатой

http://www.integro.ru/forum/viewtopic.php?t=758
_________________
ОАО "Самара-Информспутник",
инженер-программист Попов Артем
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Николаускас



Зарегистрирован: 27.11.2013
Сообщения: 52

СообщениеДобавлено: Ср 22 Янв 2014 12:27    Заголовок сообщения: Ответить с цитатой

Спасибо! А в курсе ли кто-нибудь, можно ли отменить выключение модуля? Я говорю про обработчик Module_WillStop().
Подобно способу с "e.Cancel=true" в WinForms.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
APopov



Зарегистрирован: 19.06.2006
Сообщения: 347
Откуда: Самара

СообщениеДобавлено: Ср 22 Янв 2014 12:53    Заголовок сообщения: Ответить с цитатой

На вскидку - нет. Думаю, даже если вы в обработчике поднимите исключение, Ингео его "проглотит" и всё равно прибьёт модуль и удалис свои ссылки на него.

Лучше, конечно, на этот вопрос ответят разработчики и, наверное, в отдельном топике, если такой будет создан Smile

_________________
ОАО "Самара-Информспутник",
инженер-программист Попов Артем
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Николаускас



Зарегистрирован: 27.11.2013
Сообщения: 52

СообщениеДобавлено: Ср 22 Янв 2014 12:56    Заголовок сообщения: Ответить с цитатой

Последую Вашему советуSmile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Николаускас



Зарегистрирован: 27.11.2013
Сообщения: 52

СообщениеДобавлено: Ср 22 Янв 2014 15:00    Заголовок сообщения: Ответить с цитатой

И снова вопрос. В ИнГео 4.4 в окне редактора модуля есть две панели инструментов. В самой верхней располагаются характерные кнопки старта и остановки модуля. В панели немного ниже есть похожие кнопки "Запустить выполнение программы" и "Остановить выполнение программы".
Я думал, что они делают одно и то же. Оказалось, нет. Поэтому хочу узнать, в чем различие.
Например, при нажатии старта из верхней панели происходит автоматическое нажатие кнопки старта в нижней панели (это видно по визуальному эффекту. В меню появляется пункт моего модуля, поскольку в обработчике старта я это прописал). При нажатии сначала старта из нижней панели тоже автоматически нажимается кнопка старта в верхней панели. То есть в обоих случаях выполняется обработчик события Module_StartComplete().
При нажатии кнопки стоп в верхней панели в нижней аналогичная кнопка тоже нажимается, из меню пропадает мой пункт. Обработчик Module_WillStop() выполняется. А вот при нажатии сначала кнопки стоп в нижней панели верхняя кнопка стоп не становится автоматически нажатой. Однако мой пункт меню исчезает. При этом Module_WillStop() не выполняется. И в этом случае даже после нажатия верхней кнопки остановки этот обработчик не выполняется. А в указанном обработчике находится код, который необходимо выполнить для нормальной работы по моей задумке.
То есть получается, что выполнение этого обработчика пользователь сможет обойти (при том, что по исчезновению пункта меню он будет считать, что модуль выключен), что неприемлемо. Скажите, как можно это исправить?
Надеюсь, получилось не очень запутанноSmile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
APopov



Зарегистрирован: 19.06.2006
Сообщения: 347
Откуда: Самара

СообщениеДобавлено: Ср 22 Янв 2014 18:19    Заголовок сообщения: Ответить с цитатой

Пользователь не должен запускать модуль из редактора модулей Smile
Он запускает/останавливает модуль ставя галочку в списке модулей (вызываемого по Ctrl+F7) , и это будет аналогично действиям кнопок из "верхней" панели.
А "нижняя" панель в редакторе она для разработчика.

_________________
ОАО "Самара-Информспутник",
инженер-программист Попов Артем
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Николаускас



Зарегистрирован: 27.11.2013
Сообщения: 52

СообщениеДобавлено: Чт 23 Янв 2014 09:07    Заголовок сообщения: Ответить с цитатой

Спасибо! Что-то я притормозилSmile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков Часовой пояс: GMT + 5
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять приложения в этом форуме
Вы можете скачивать файлы в этом форуме


© phpBB Group
Русская поддержка phpBB