|
|
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
В общем, задачка архитектурного характера Есть у меня прога, в нормальном режиме работы там открыта пользователем куча окон, с которыми он работает параллельно, программа не блокирует ему ничего, давая возможность переключаться между потребностями. Но возникает ситуация, когда требуется, чтобы вся прога приостановила свою работу, не выполнялся никакой код, до определенного момента. Я запускаю модальную форму, в этой форме работает цикл. Так вот, если цикл без DoEvents, то комп тормозит, так как цикл зря грузит проц, да и окно самой программы не хочет перерисовываться при переключениях из другого приложения. А если поставить DoEvents, то будут отрабатываться события в приложении, а это как раз крайне нежелательно. как бы так просто убить двух зайцев? делать дополнительный контроль во всех событиях, которые могут произойти - достаточно проблематично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 12:21 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
Sleep() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 12:29 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
Shocker.ProНо возникает ситуация, когда требуется, чтобы вся прога приостановила свою работу, не выполнялся никакой код, до определенного момента. Я запускаю модальную форму, в этой форме работает цикл.Каков критерий окончания этой приостановки? что за определённый момент? критерий - наступление некоего события или действия пользователя (нажатие кнопки, например)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 12:31 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
Ожидание восстановления связи с сервером )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 12:40 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
Оставить цикл с DoEvents, но добавить туда Sleep. Sleep приостановит прогу без загрузки проца, а DoEvent позволит иногда перерисовать окно. Хотя в этот момент пытливый юзер может успеть куда-нибудь ткнуть и сгенерить событие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 12:50 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
Да блин, если разрешить doevents, то будут происходить события, которых быть не должно. И это необязательно пользовательские события. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 12:55 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, оставить DoEvents и блокировать нажатия мыши и клавы, на всякий пожарный давать фокус какому-нить левому окну) правда от программного ввода не спасёт... либо что-нить можно сообразить с msgbox'ом. вроде, можно было послать msgbox так, что прога работает, а ввод данных в прогу не осуществляется, пока не закрыт msg... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 13:04 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
> Автор: Shocker.Pro > Да блин, если разрешить doevents, то будут происходить события, которых быть не должно. И это необязательно > пользовательские события. БегЁшь по всем открытым окнам и делаешь им Enabled = False, открываешь свое модальное окно в циклом и DoEvents'ом и ждешь сигнала окончить перекур, прячешь модальное окно и пробегаешся по открытым окнам и делаешь им Enabled = True. И овцы целы(задизейбленным окнам недоходят виндовые сообщения) и волки сыты(делается то что нужно) Ы? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 13:08 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
я в таком случае использую цикл с DoEvents, однако блокирую все контролы (Enabled = False) до выхода из цикла. Потом разблокирую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 13:23 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
BelowZero, Игорь Горбонос, Диклевич Александр Ребята, вы все меня не услышали!!!! Пользователь и так ничего не может сделать, потому что форма модальная, запрещена к выгрузке и на ней нет контролов. Но в программе происходят события, не связанные с пользовательскими действиями, вот их-то и не надо обслуживать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 13:55 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
тогда через глобальный флаг, который в своих событиях отслеживай ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 13:59 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
Все вышеотписавшиеся проигнорировали этот момент: И это необязательно пользовательские события.Это может быть событие какой-нибудь асинхронной библиотеки, с UI никак не связанной. XMLHTTP, например. Shocker.ProДа блин, если разрешить doevents, то будут происходить события, которых быть не должно.Тогда Refresh вместо DoEvents. Refresh гораздо накладнее DoEvents, но можно минимизировать нагрузку на проц, поставив в Sleep промежуток побольше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 14:01 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
Shocker.ProОжидание восстановления связи с сервером ))Как именно определяется факт восстановления связи? Если, к примеру, изменяется статус контрола в другой форме - то в соотв. методе можно сделать unload этой модальной формы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 14:09 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
Konst_Oneтогда через глобальный флаг, который в своих событиях отслеживайкак я сказал в первом посте - это неудобно, так как обработчиков событий много разных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 14:21 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
AntonariyShocker.ProДа блин, если разрешить doevents, то будут происходить события, которых быть не должно.Тогда Refresh вместо DoEvents. Refresh гораздо накладнее DoEvents, но можно минимизировать нагрузку на проц, поставив в Sleep промежуток побольше.Refresh чего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 14:22 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
Akina, Твой пример не решает мою проблему - стронние события будут выполняться (даже если MsgBox открыть )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 14:30 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
Shocker.ProТвой пример не решает мою проблему - стронние события будут выполнятьсяАх вот что тебе нужно... тут, я боюсь, без API-шного SuspendThread или чего-то аналогичного тебе не обойтись... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 14:36 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
Shocker.ProRefresh чего?Модальной формы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 14:44 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
> Автор: Antonariy > Все вышеотписавшиеся проигнорировали этот момент: > > И это необязательно пользовательские события. > Это может быть событие какой-нибудь асинхронной библиотеки, с UI никак не связанной. XMLHTTP, например. Тогда я бы ввел новую сущность - диспечер обработчиков в котором бы создавал объекты обработки и в случае необходимости "переназначал" реальные объекты с переменной обработчика на другую объектную переменную которая объявленна без WithEvent, а саму переменную-обработчик Nothing'ил. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 15:13 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
> Автор: Игорь Горбонос > ...WithEvent, а саму переменную-обработчик Nothing'ил. А потом, при необходимости снова возвращал объект переменной-обработчику P.S. Сори, у меня - руки крюки. Отправил раньше чем дописал :( Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 15:17 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
сам вопрос мне не очень внушает доверия. может что-то стоит пересмотреть в архитектуре самой программы. зачем какое-то модальное окно юзеру, почему не должны работать ассинхронные события неких объектов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 15:20 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
Игорь Горбонос, Konst_One Не до переделки архитектуры! Слишком большой объем работы. Фактически, пытаюсь создать заплатку. Порвалась связь с сервером - модальная форма занимается переконнектом. В это время могут срабатывать таймеры, события окончания асинхронных процессов и т.п. Так как они могут тоже обращаться к серверу, а мы и так занимаемся ожиданием связи, надо, чтобы события эти также подвисли в ожидании. Antonariy sleep+refresh проблему не решил - окно приложения не обновляется, то есть если я куда-то переключусь, обратно в приложение вернуться не могу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 16:53 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
Тогда только второй поток. Основной спит и реконектится, второй развлекает пользователя формочкой "подождите/отмените". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 16:59 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
AntonariyТогда только второй потокЯ сам не работал с CreateThread, примеров-то тут полно, вчера читал, но есть негативные отзывы в том числе твои (ща сходу не могу найти). Подойдет он для данной задачи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 17:09 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
Напрямую нет. Тебе нужно ознакомиться с этим постом, походить по ссылкам там опубликованным и вообще пообщаться с автором. Он является крупнейшим специалистом, не побоюсь этого слова, в мире (не работающим в MS), по внутренностям VB6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 20:09 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
Antonariy, Честно говоря, нифига не понял. КОСВЕННО из топика вроде бы следует, что без ломания рантайма ничего не выйдет. И в итоге чел пока так и не выложил ломалку. Да и, собственно, зачем мне с ним знакомиться, у меня же вроде задача тривиальней некуда - окошко показать. С другой стороны, народ же вроде как-то делал многопоточность и вроде как-то у него это работало вез взлома рантайма? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2011, 20:42 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
Корректно она работает только в Activex exe без всяких CreateThread. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2011, 12:25 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
Antonariy, Я конечно же читал эту ветку, но сходу сложно было понять, годиться ли там что-то для под мои нужды, опять же Дмитрий любит все усложнять ) Ок, попробую разобрать пример ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2011, 12:54 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
блин, а там довольно много букаф в проекте. я понимаю, что это демонстрация неких возможностей, и прога делает много больше, чем мне требуется. Можно ли тогда в двух словах описать, что делает эта прога (помимо, собственно, визуального эффекта, который я наблюдаю, когда запускаю приложенный скрипт)? Либо (для меня конечно, был бы самый идеальный вариант) помочь реализовать мне, собственно, требуемую задачу, а именно - пока основной поток завис, пытаясь достучаться до сервера и установить соединение, вывести формочку для информирования пользователя, при этом даже если висит выполнение команды Connection.Open (а не Sleep) форма отображается нормально, даже если переключиться в другое приложение и вернуться обратно, чтобы не пугать пользователя якобы зависшей программой. Или, как вариант, запустить установку соединения в другом потоке (если возможно потом передать установленное соединение в основную прогу), а сама прога уже будет общаться с пользователем и просить его подождать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2011, 00:32 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
ЗЫ: в примере даже не очень понял, где возникает демонстрация многопоточности. То ли создание самого объекта из скрипта уже запуускает асинхронный поток, то ли внутри активикса создаются потоки, но тогда какое отношение это имеет к StandardEXE и почему это не может быть реализовано в таком проекте... и зачем внутри проекта он создает экземпляр самого себя и можно ли эту часть отделить и вынести в StandardExe... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2011, 00:43 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
Демонстрация многопоточности происходит в момент нажатия кнопки. Создаются десять потоков, которые делают Sleep. Несмотря на Sleep интерфейс не блокируется, можно свободно гулять по листбоксам. CreateObject нужен для создания объекта в новом потоке, при New объект создастся в основном потоке. vbs-файл нужен для отладки, после запуска ide ждет, пока кто-нибудь не создаст отлаживаемый объект. но тогда какое отношение это имеет к StandardEXE и почему это не может быть реализовано в таком проектеЭто данность, так работает рантайм vb6 и это было сделано специально. и зачем внутри проекта он создает экземпляр самого себяЭто уже привычка, создавать единственный глобальный объект. При запуске exe-файла проверяется наличие этого объекта в памяти и делается выход, если он есть. В данном примере это может и не надо, но я решил пойти проверенным путем. можно ли эту часть отделить и вынести в StandardExeНет, изменение типа проекта обязательно. В этом нет ничего страшного) помочь реализовать мне, собственно, требуемую задачуНе вопрос, но мне нужен пример, который приблизительно отражал бы твою архитектуру, и который ты мог бы перенести обратно. Обещаю, он почти не пострадает, только обрастет свистелками)) Или, как вариант, запустить установку соединения в другом потоке (если возможно потом передать установленное соединение в основную прогу), а сама прога уже будет общаться с пользователем и просить его подождать.Мне без разницы, но как быть с непользовательскими событиями в основном потоке, которые не заморозятся? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2011, 01:24 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
Antonariyно мне нужен примерА хотя не нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2011, 01:39 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
AntonariyВ данном примере это может и не надоНадо. Я забыл, новый поток создается независимым, все глобальные переменные у него свои собственные, поэтому поиметь информацию о наличии основного потока можно только таким способом. Плюс, можно получить из него любую информацию через методы класса, если он не спит, конечно. А вот и пример: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2011, 02:42 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
Пардон, изменения не сохранил. Вот нормальный: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2011, 02:49 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
Antonariy, Что-то я догнать не могу, как применить пример к собственным нуждам, то бишь к проекту StandardExe. То есть мне нужно перенести к себе то, что делает Form1? Или просто создать объект CreateObject "sleeper.alarm". В первом случае ты вроде говорил, что не прокатит, во втором - неясен смысл, ведь после CreateObject основная программа продолжит свою работу. И не пойму, куда мне вставить свой цикл (условно говоря пока Do Until 1 = 2: Loop), который будет крутить основной поток. И, кстати, при запуске примера получается, что переключиться на Form1 все равно не получается, он висит, а я как раз хотел избежать этого, полагая, что окно второго потока будет показываться при попытке переключения на первый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2011, 14:46 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
Вот сейчас ты мне ЦЭ напоминаешь, ей-богу. Но возникает ситуация, когда требуется, чтобы вся прога приостановила свою работу, не выполнялся никакой код, до определенного момента. Я запускаю модальную форму, в этой форме работает цикл.Никакой код включает в себя "переключиться на Form1", потому что Form1 должна получить событие от мыши, а оконная процедура не выполняется. а я как раз хотел избежать этого, полагая, что окно второго потока будет показываться при попытке переключения на первыйНевозможно показать новое окно модально окну из другого потока. Если это нужно только для того, чтобы пользователь не прибил "зависшее" приложение через окошко "приложение не отвечает", то можно основное окно просто прятать перед созданием потока. Или можно имитировать модальность, если свистелки важнее здравого смысла: 1) Сделать скриншот основного окна 2) Натянуть его на еще одну форму из второго потока 3) Отобразить ее поверх окна основного потока 4) Спрятать основное окно 5) Отобразить форму ожидания модально форме-скриншоту. 6) Заснуть, ожидая сигнала от второго потока. Что-то я догнать не могу, как применить пример к собственным нуждам, то бишь к проекту StandardExe.Либо сделать этот свой проект ActiveX, либо сделать отдельную программу ActiveX exe, которая и будет (теперь уже в отдельном процессе, а не потоке) делать что там тебе надо. Я бы изменил тип проекта вместо того, чтобы таскать второй файл, который обязательно когда-нибудь на какой-нибудь машине окажется не той версии, что надо. И не пойму, куда мне вставить свой циклВ корзину для мусора, апи WaitForSingleObject вместо него, она как раз для межпоточного взаимодействия предназначена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2011, 16:02 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
AntonariyВот сейчас ты мне ЦЭ напоминаешь, ей-богу.сам себе напоминаю, ужас, но я, по крайней мере пытаюсь хотя разобрать написанное )))AntonariyИ не пойму, куда мне вставить свой циклВ корзину для мусора,так, блин, речь то о том, что основной поток не просто должен бездельничать, а делать цикл попыток установки связи с сервером, а как он его будет делать, если заклинится на WaitForSingleObject. AntonariyНикакой код включает в себя "переключиться на Form1", потому что Form1 должна получить событие от мыши, а оконная процедура не выполняется.так получается, что это не решает основную задачу - показывать пользователю что-то при попытке переключиться на приложение Antonariyпрятать перед созданием потока. Или можно имитировать модальностьтак мне это тоже пришло в голову. Причем пользователь обойдется без скриншота, я спрячу от него основное окно, покажу ему формочку "подождите", у которой будет то же название и та же иконка, сойдет, думаю. Но тогда зачем организовывать все эти потоки, если я могу просто с помощью CreateObject создать объект, который мне выведет форму на экран... или я опять чего-то не продумал? AntonariyЛибо сделать этот свой проект ActiveXЯ просто не знаю, чем это чревато. Там же куча всякого понаписана, не возникнет ли где глюк какой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2011, 16:25 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
Но тогда зачем организовывать все эти потоки, если я могу просто с помощью CreateObject создать объект, который мне выведет форму на экран... ... и эта форма зависнет, когда заработает цикл. Поток будет занят циклом, а не еще одной оконной процедурой. Давай тогда текст цикла. Если в нем есть отсылки к своим процедурам, устанавливающим соединения, их текст тоже. Я на 99% уверен, что их можно устанавливать асинхронно в другом потоке/процессе, не нагружая процессор циклами. Я просто не знаю, чем это чревато. Там же куча всякого понаписана, не возникнет ли где глюк какой?Потерянными 20ю минутами, код для проверки модифицировать скорее всего не придется. В свойствах проекта в первой закладке поставить галку Thread Per Object, в четвертой StartMode - Stand Alone, это позволит обойтись без vbs-скрипта для отладки. Все контролы и классы (за исключением какого-нибудь одного попроще, должен быть хотя бы один public multiuse) сделать приватными, нефиг без пользы унавоживать реестр. Далее удовлетворять IDE пока она не соизволит скомпилировать. Запустить exe, я на 99% уверен, что будет работать штатно, и лишь при выходе может остаться в памяти. Это система сама создаст экземпляр публичного класса, поэтому я контролирую такие вещи в sub main. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2011, 17:22 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
Antonariyи эта форма зависнет, когда заработает цикл. Поток будет занят циклом, а не еще одной оконной процедурой.дык, не зависает. я ща экспериментирую так (код в StandardExe): Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. SVAOuter.Host - это ActiveX.exe. В классе Host две строки - показ формы при инициализации класса и выгрузка ее при терминировании класса AntonariyДавай тогда текст цикла. Если в нем есть отсылки к своим процедурам, устанавливающим соединения, их текст тоже. Я на 99% уверен, что их можно устанавливать асинхронно в другом потоке/процессе, не нагружая процессор циклами.Да, собственно, внутри цикла единственная команда - ADODB.Connection.Open, если ошибка, цикл повторяется. Проблема соединения в 99% случаем связана с потерей связи с сервером (отключение интернета или туннеля на удаленных машинах, выпадание пачкорда из розетки с помощью уборщицы и т.п.), поэтому Open зависает надолго. Соединение устанавливается с MSSQL, протокол - TCP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2011, 17:45 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
SVAOuter.Host - это ActiveX.exeОткуда ж мне было знать? Это отдельный процесс, чего ему виснуть? Да, собственно, внутри цикла единственная команда - ADODB.Connection.Open, если ошибка, цикл повторяется.Вот и отлично, можно не грузить процессор синхронным циклом Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. SVAOuter.Host: Код: vbnet 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. Формочки добавь по вкусу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2011, 19:22 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
Отлично, если не сложно, подскажи, что с дистрибуцией ActiveX.Exe? Из того, что я нарыл - что мол он сам регистрируется при первом запуске. То есть как бы мне не попасть при смене версий (допустим, я даже не сохраню преемственность в какой-то из версий SVAOuter) - мне надо просто запустить exe-шник разок из основного проекта, который в свою очередь должен впустую отработать Sub Main? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2011, 23:57 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
Насчет регистрации при запуске, все так и есть. Насчет версий, используй позднее связывание и тогда проблемы будут лишь в том случае, если изменится название проекта, класса или одного из членов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2011, 10:18 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
Antonariy, Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2011, 10:35 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
Antonariy, Так сказать, "крик души"Меня вот всегда удивляло, почему 99,99% людей, с упорством, достойным лучшего применения, ломятся написать у себя в коде CreateThread(), кивая, в лучшем случае, на Эпплмана (несмотря на то, что он сам написал после выхода SP2 или SP3 к VB5 - "всё, баста, run-time изменился, так больше работать не будет"), вместо того, чтобы почитать официальную документацию к продукту, найти (впервые появившийся в MSDN Library году эдак в 1997, ещё до выхода VB6) официальный пример "ThreadDemo" , найти пример "Coffee", почитать главу "Asynchronous Call-Backs and Events" и соседние главы - ведь это относится к Visual Basic Concepts, "всего лишь" к концепциям применения продукта. Хотя бы это сделать. Мэтью Кёрланда почитать, если хочется большего. Но нет. Фиг вам. Сами с усами. Будем обламываться и хаять продукт и производителя. Я вот устал на эту тему общаться. Может, у тебя сил больше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2011, 13:23 |
|
||
|
VB6: Приостановить выполнение кода приложения
|
|||
|---|---|---|---|
|
#18+
БенедиктМеня вот всегда удивляло, почему БенедиктЯ вот устал на эту тему общаться. Может, у тебя сил больше?А смысл тратить на это силы? Исход известен: либо поциент, разбив лоб об непрошибаемое, таки сделает как положено, либо заявит, что оно ему не надо, и бросит. Если этот поц под моей ответственностью, то нужное направление ему будет задано в директивном виде. Проблема на самом деле не в технике, а страхе перед "новым" и "неизвестным" — вдруг ВСЁ перестанет работать????77 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2011, 14:01 |
|
||
|
|

start [/forum/search_topic.php?author=%D0%BF%D0%BE%D0%BC%D0%BE%D0%B3%D1%83&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
73ms |
get tp. blocked users: |
1ms |
| others: | 442ms |
| total: | 618ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...