|
|
|
Время жизни ActiveX EXE'шников
|
|||
|---|---|---|---|
|
#18+
Подскажите пожалуйста как можно управлять временем жизни ActiveX EXEэшника написанном на VB? Тоесть мне необходимо чтобы сам EXEэшник никогда не выгружался из памяти, даже если на него не ссылается ни один клиент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2004, 11:14:19 |
|
||
|
Время жизни ActiveX EXE'шников
|
|||
|---|---|---|---|
|
#18+
а зачем? непонятно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2004, 12:30:46 |
|
||
|
Время жизни ActiveX EXE'шников
|
|||
|---|---|---|---|
|
#18+
Дык он и не выгрузится... Это ж exe, а не dll Word или Excel тоже ActiveX exe, пока им не сделаешь Application.Quit, они будут висеть в памяти и жрать ее большими ложками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2004, 12:40:26 |
|
||
|
Время жизни ActiveX EXE'шников
|
|||
|---|---|---|---|
|
#18+
MegaDimonПодскажите пожалуйста как можно управлять временем жизни ActiveX EXEэшника написанном на VB? Тоесть мне необходимо чтобы сам EXEэшник никогда не выгружался из памяти, даже если на него не ссылается ни один клиент. :) Обычно проблема состоит в обратном: как выгрузить ActiveX EXE из памяти, если с клиентом что-то случилось. Управление жизнью ActiveX EXE-шника у MS организовано из рук вон плохо. Это они сами подчеркивают постоянно в сравнениях DCOM vs Remoting Грубо говоря, чтобы сделать то, что Вам нужно Вам придется "пристреливать" клиентов каким-то особым способом, чтобы они не успевали освободить ссылку. Но это... сами понимаете. П.э. возможно Вам лучше написать например Win сервис, к-й постоянно держал бы в себе ссылку на ActiveX EXE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2004, 12:41:30 |
|
||
|
Время жизни ActiveX EXE'шников
|
|||
|---|---|---|---|
|
#18+
For Alexey Kudinov идея насчет сервиса с ссылкой на компонент мнен понравилась! Thanks ;) For Antonariy Еще как выгрузиться! Только последний клиент отключается и тутже вылетает. For raur Сервер помимо предоставления интерфейсов клиентам еще выполняет другие функции по сбору и обработке информации. Клиенты подключаютя через DCOM только для просмотра данных накопленных сервером и задание настроек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2004, 12:49:49 |
|
||
|
Время жизни ActiveX EXE'шников
|
|||
|---|---|---|---|
|
#18+
а зачем держать его в памяти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2004, 13:09:30 |
|
||
|
Время жизни ActiveX EXE'шников
|
|||
|---|---|---|---|
|
#18+
чтобы он работал. Если клиентов нет он все равно должен собирать информацию и в базу данных ее пихать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2004, 13:50:16 |
|
||
|
Время жизни ActiveX EXE'шников
|
|||
|---|---|---|---|
|
#18+
тогда тебе надо написать что-либо, что вызвало-бы нужные методы и поставить в автозагр. и vb.hide ... а какая операционка у тебя о птичках? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2004, 14:18:23 |
|
||
|
Время жизни ActiveX EXE'шников
|
|||
|---|---|---|---|
|
#18+
Система Windows2000, чтобы уомпонент не выгружался я сделал как ты говориш прогу которая постоянно на него ссылается. Идея была хорошая. У меня такой вопрос, как можно сделать чтобы каждый клиент создавая объект компонента получал один и тотже экземпляр объекта. Т.е. нужно чтобы все клиенты работали с одним экземпляром класса, а не порождали новые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2004, 11:47:40 |
|
||
|
Время жизни ActiveX EXE'шников
|
|||
|---|---|---|---|
|
#18+
MegaDimon У меня такой вопрос, как можно сделать чтобы каждый клиент создавая объект компонента получал один и тотже экземпляр объекта. Т.е. нужно чтобы все клиенты работали с одним экземпляром класса, а не порождали новые. Singleton хотите сэмулировать ? По простому не выйдет. По сложному: 1 - на сервере создается 1 экземпляр какого-то класса 2 - клиенты получают к нему доступ ч-з фабрику классов, т.е. через методы, дающие доступ к этому экземпляру Пример Почитайте пример, обратите внимание на Bug, который там описан. Добавлю, что Вы конечно должны очень аккуратно разрабатывать свой Shared класс. Т.е. помнить, что он именно Shared, поэтому никаких флагов, помнить про блокировку ресурсов, помнить, что клиенты могут "умереть" и т.п. Очень, очень аккуратно. В заключение - почитайте про Instancing и Threading в ActiveX EXE. При разработке такого рода проектов эти параметры очень влияют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2004, 13:47:09 |
|
||
|
Время жизни ActiveX EXE'шников
|
|||
|---|---|---|---|
|
#18+
Alexey огромное спасибо за ответ и ссылку на пример! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2004, 15:32:38 |
|
||
|
Время жизни ActiveX EXE'шников
|
|||
|---|---|---|---|
|
#18+
AntonariyДык он и не выгрузится... Это ж exe, а не dll Word или Excel тоже ActiveX exe, пока им не сделаешь Application.Quit, они будут висеть в памяти и жрать ее большими ложками. А вот как раз возникла проблема чтобы выгрузить приложение Excel. Application.quit не помогает :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2005, 10:54:46 |
|
||
|
Время жизни ActiveX EXE'шников
|
|||
|---|---|---|---|
|
#18+
MegaDimonСистема Windows2000, чтобы уомпонент не выгружался я сделал как ты говориш прогу которая постоянно на него ссылается. Идея была хорошая. У меня такой вопрос, как можно сделать чтобы каждый клиент создавая объект компонента получал один и тотже экземпляр объекта. Т.е. нужно чтобы все клиенты работали с одним экземпляром класса, а не порождали новые. допустим - получилось. (ЕXE и т.д.) аднака панятна ли, что пока один дернул такой класс за метод, все остальные клиенты обязаны ждать. и не могут дотронутся до такого объекта. то есть дотронутся могут, но либо ждать будут, либо отвалятся п о таймауту. Понимаете ли Вы, что создаете общесистемное узкое горло? (Видел таку бяку от пропессианальных прогряммиздов - м#%*чье таким способом через один коннект к базе работало. Песня просто, картина Репина -сервер базы прохлаждается, "компонент" трудится, юзера матерятся. ) Если понимаете - вперед за дело. 1) Создать ActiveX.Exe проект. поставить Thread Pool=1. Startup Object=Sub Main 2) Завести PublicMultiUse класс, функциями которого будете возвращать экземпляр класса ЛюбимыйИЕдинственныйНаВсех, который реализует интерфейс IЛюбимыйИЕдинственныйНаВсех 3) создаете PublicNotCreatable класс с именем IЛюбимыйИЕдинственныйНаВсех 4)Создаете MultiUse класс RЛюбимыйИЕдинственныйНаВсех 5) В стандартном модуле заводите (глобальную) переменную уровня модуля типа IЛюбимыйИЕдинственныйНаВсех В Sub Main формируете экземпляр RЛюбимыйИЕдинственныйНаВсех и сохраняете в переменную модуля То есть пальцев пять и все об асфальт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2005, 12:42:34 |
|
||
|
Время жизни ActiveX EXE'шников
|
|||
|---|---|---|---|
|
#18+
RЛюбимыйИЕдинственныйНаВсех - он Private ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2005, 13:24:44 |
|
||
|
Время жизни ActiveX EXE'шников
|
|||
|---|---|---|---|
|
#18+
глупыйглупый ... Ржунимагу... :-))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2005, 13:40:22 |
|
||
|
Время жизни ActiveX EXE'шников
|
|||
|---|---|---|---|
|
#18+
авторА вот как раз возникла проблема чтобы выгрузить приложение Excel. Application.quit не помогает :( Бывает. С чем связано не знаю. Нужно внимательно посмотреть, не осталось ли ссылок на само приложение или какие нибудь его объекты. Полезно так же закрыть все документы, после чего сделать Quit. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2005, 14:27:08 |
|
||
|
Время жизни ActiveX EXE'шников
|
|||
|---|---|---|---|
|
#18+
Antonariy авторА вот как раз возникла проблема чтобы выгрузить приложение Excel. Application.quit не помогает :( Бывает. С чем связано не знаю. Нужно внимательно посмотреть, не осталось ли ссылок на само приложение или какие нибудь его объекты. Полезно так же закрыть все документы, после чего сделать Quit. Если просто использую это приложение, то все закрывается и выгружается из памяти. Но когда я его используя для вставки данных в Access, то никак не хочет выгружать приложение Excel. Привожу фрагмент кода Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2005, 16:14:56 |
|
||
|
Время жизни ActiveX EXE'шников
|
|||
|---|---|---|---|
|
#18+
переставь conn.Close до xlApp.workbooks.Close xlApp.quit Set xlApp = Nothing скорее всего поможет. а на вопрос "почему" - тебе уже Antonariy ответил. в данном случае неявно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2005, 16:40:40 |
|
||
|
Время жизни ActiveX EXE'шников
|
|||
|---|---|---|---|
|
#18+
глупыйглупыйпереставь conn.Close до xlApp.workbooks.Close xlApp.quit Set xlApp = Nothing скорее всего поможет. а на вопрос "почему" - тебе уже Antonariy ответил. в данном случае неявно. Ничего не изменилось, приложение по-прежнему в памяти. Выгружается только после закрытия Visual Basic. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2005, 17:57:23 |
|
||
|
Время жизни ActiveX EXE'шников
|
|||
|---|---|---|---|
|
#18+
А если On Error Resume Next убрать, на что ругается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2005, 18:02:38 |
|
||
|
Время жизни ActiveX EXE'шников
|
|||
|---|---|---|---|
|
#18+
Serg841 глупыйглупыйпереставь conn.Close до xlApp.workbooks.Close xlApp.quit Set xlApp = Nothing скорее всего поможет. а на вопрос "почему" - тебе уже Antonariy ответил. в данном случае неявно. Ничего не изменилось, приложение по-прежнему в памяти. Выгружается только после закрытия Visual Basic. (Set conn = Nothing - дотянул туда же?) значит дело не в этом куске. Какие-то куски есть еще с поброшенными явными или неявными объектными ссылками. шерсти код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2005, 18:05:44 |
|
||
|
Время жизни ActiveX EXE'шников
|
|||
|---|---|---|---|
|
#18+
MelkiadesА если On Error Resume Next убрать, на что ругается? Если таблица в аксесе уже существует, то выдает ошибку On Error Resume Next позволяет ее избежать глупыйглупый (Set conn = Nothing - дотянул туда же?) значит дело не в этом куске. Какие-то куски есть еще с поброшенными явными или неявными объектными ссылками. шерсти код. Set conn = Nothing тоже поставил, без изменений. Весь код я выложил, больше никаких кусков нет. Наверное при выполнении sql-запроса книга все равно остается в памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2005, 09:22:23 |
|
||
|
Время жизни ActiveX EXE'шников
|
|||
|---|---|---|---|
|
#18+
Serg841 Set conn = Nothing тоже поставил, без изменений. Весь код я выложил, больше никаких кусков нет. Наверное при выполнении sql-запроса книга все равно остается в памяти. Такое ощущение, что Excel удерживает у себя ссылку на Access. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2005, 09:30:16 |
|
||
|
Время жизни ActiveX EXE'шников
|
|||
|---|---|---|---|
|
#18+
AntonariyНужно внимательно посмотреть, не осталось ли ссылок на само приложение или какие нибудь его объекты. Set xlWkb = xlApp.workbooks.Open("D:\Dan_009.xls") Убить в nothing! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2005, 09:47:08 |
|
||
|
Время жизни ActiveX EXE'шников
|
|||
|---|---|---|---|
|
#18+
Antonariy AntonariyНужно внимательно посмотреть, не осталось ли ссылок на само приложение или какие нибудь его объекты. Set xlWkb = xlApp.workbooks.Open("D:\Dan_009.xls") Убить в nothing! Не помогло. Дело в том, что если не использовать Access, т.е. только Excel то Код: plaintext 1. 2. Так что думаю дело не в других ссылках, а в Access, т.е. во взаимосвязи с ним Excel. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2005, 11:04:40 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=32656628&tid=2167266]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
63ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 360ms |

| 0 / 0 |
