Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
05.08.2013, 09:45
|
|||
---|---|---|---|
|
|||
Работа с внешней компонентой |
|||
#18+
Здравствуйте. Сразу скажу, что я не программист 1С... Есть своя написанная компонента на C#. Она работает с еще одной длл, которая в свою очередь работает с устройством. У длл устройства есть событие(event) считывания данных. Компонента реализует интерфейс IInitDone (как по всем мануалам). В 1С компонента подключается нормально (ПодключитьВнешнююКомпоненту(...) + ВК = Новый COMОбъект(...)). Подключается она на форме обработки. И проблемы появились при отключении компоненты. А именно, при закрытии этой формы. События с устройства продолжают генерироваться (в коде C# стоит MessageBox). И. При повторном открытии формы, события в коде длл продолжают генерироваться (месседжбоксы идут), но события в 1С (AsyncEvent.ExternalEvent / событие внешней компоненты) уже не появляются. В C# коде как только не пытался освобождать ресурсы, отписывать от событий, все напрасно. В обработке закрытия формы 1С пишу : Код: c# 1. 2.
Далее сделал просто еще один метод в своем коде ВК, который отписывается от событий. Если вызывающий код написан на C#, то все нормально. В 1С, когда закрываешь вызывающую форму события(кода C#) продолжают генерироваться. Перестают они генерироваться только при полном закрытии 1С. ради интереса написал деструктор своей компоненты с месседжбоксом. При закрытии 1С деструктор вызывается 1-3 раза(!). Метод Done - 1-2 раза. И количество вызовов как то несистемно... Далее, при открытии новой формы в 1С, в диспетчере задач добавляется новый поток у 1С и при закрытии формы, он не убивается, а продолжает висеть. И видимо из всего этого, 1С создает еще какой то фоновый процесс при открытии формы, который продолжает висеть... и вопрос, как его убивать? или... как правильно отключать внешнюю компоненту при закрытии формы? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
05.08.2013, 10:59
|
|||
---|---|---|---|
|
|||
Работа с внешней компонентой |
|||
#18+
Вынес логику подключения к устройству из метода Init в отдельный метод. Теперь события от устройства работают как надо. (то есть таки 1С создает пару одинаковых процессов работы с ВК... ) Осталась одна проблема. После Закрытия формы 1С и последующего ее открытия событие от ВК не ловится больше обработчиком формы... Хотя внутри самой ВК оно гененрируется 100% ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=28&mobile=1&tid=1519727]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
others: | 348ms |
total: | 451ms |
0 / 0 |