Имя: Пароль:
1C
 
Как ВЫгрузить ВК ?
0 DES
 
30.03.06
15:59
Как загрузить знаю.
Гружу ROM-Mail.
Боюсь, что если загружу раз 10 подряд , то глюкнет...
Грузить в глобальнике не хочу,
хочу загрузить и выгрузить в процедуре формы...
1 Лямур
 
30.03.06
16:00
(0)Уничтожь переменную внешней компоненты.
2 Волшебник
 
модератор
30.03.06
16:00
3 ДенисЧ
 
30.03.06
16:00
(0) ЗавершитьРаботуСистемы(). ТОчно выгрузит :-)
4 smaharbA
 
30.03.06
16:01
Не загружай
Попытка
ВК.Метод();
исключение
ЗагрузитьВнешнююКомпаненту(ROM-Mail);
конецпопытки;
5 DES
 
30.03.06
16:06
(1) как это ?
6 DES
 
30.03.06
16:08
Может в глобальнике сделать переменную и проверять ее на ПустоеЗначение(BK) ?
ВК = СоздатьОбъект("AddIn.AddInMail")
7 smaharbA
 
30.03.06
16:11
(6)
А че (5) ненравится ? тока поправить конечно
Попытка
ВК=СоздатьОбъект("КакОнУ-ROM-Mail-называется");
исключение
ЗагрузитьВнешнююКомпаненту(ROM-Mail);
конецпопытки;
8 Лямур
 
30.03.06
16:14
(2)Создание - ВК=СоздатьОБъект(...);
Уничтожение ВК="";
9 smaharbA
 
30.03.06
16:19
(8) так тока переменную очистишь, а ВК останется загружена, так что в этом смысла почти нет...
10 DES
 
30.03.06
16:25
(9) а как можно определить что ВК остается загружена ?
11 smaharbA
 
30.03.06
18:40
(10) См (7)
12 Волшебник
 
модератор
30.03.06
18:41
(7) см. также Метод Рупора
13 smaharbA
 
30.03.06
18:48
(12) Рупор вааще та еще "сволота" :) (выдает на гора такое простое, маладец)
14 romix
 
01.04.06
22:04
Вообще-то DLL по определению не загружаются 10 раз подряд.

Выгрузить можно только объект внешней компоненты, например, присвоив ему пустую строчку.

Если при этом не закрывается порт или не закрывается файл, то это ошибка - в методе Done надо бы их закрывать...

Винды сами заботятся об освобождении ресурсов, которые заняты exe или dll, подкачивая редко используемые страницы памяти с диска (причем, даже не из кеша, а непосредственно из exe или dll-файла, если он не был зашифрован или сжат). При этом страницы памяти, к которым не было ни одного обращения, не будут загружены ни разу.
15 avm-nn
 
02.04.06
01:27
Я так и не понял можно выгрузить компоненту или нет. Где-то в описаниях было написано, что нельзя и в ветке тоже нет ответа.
16 romix
 
модератор
02.04.06
02:36
(15) Статьи Криса Касперски:

http://citforum.ru/book/cook/dll0.shtml
глава Выгрузка динамических библиотек из памяти

http://api.farmanager.com/ru/articles/bonus/www_programme_ru_102001_1.htm
Паковать или не паковать?

Общий вывод: неиспользуемая DLL не потребляет физической памяти, и ее можно не выгружать.
17 avm-nn
 
02.04.06
02:47
(16) Тут речь не о памяти, тут речь о порте, порт захватывается. Не скажу, что случай распространенный.
18 avm-nn
 
02.04.06
02:52
(16) Из первой статьи понял, что это сама 1С захватывает порт и не освобождает его, верно?
19 romix
 
модератор
02.04.06
14:02
(17) Закрыть порт надо при разрушении (уничтожении) объекта. Или просто явно закрыть его из 1С - наверняка у ВК есть метод для явного закрытия порта.
Если речь про DLL а ля scanopos.dll, то вот здесь например явное закрытие есть:
Работа с последовательным (COM, RS-232) портом из 1С:Предприятие 7.7 и 8.0

(18) Открытые ресурсы (файлы, порты, сокеты...) принадлежат процессу (exe). Грохнешь процесс- закроются и эти ресурсы. А даже отсоединением DLL имхо ничего не добьешься.