![]() |
|
Модераторы: Akina |
![]()
|
|
| Feliastre |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 17.11.2004 Репутация: нет Всего: нет |
У меня проблема: генерация отчёта занимает много времени. Надо сделать кнопку отменить. В дельфи я реализовывал мульти поточность. В С++ просто добавлял цикл обработки сообщений. А что делать в ВБ6?
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
А это смотря как ты организовал генерацию отчета.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| efedron |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 16.3.2005 Репутация: 4 Всего: 4 |
а вот тебе и многопоточность:
--------------------
Прежде чем совершить акт разрезания определенной материи целесообразно удостовериться в правильности всех произведенных измерений. |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 7 Всего: 186 |
Время от времени добавлять в код DoEvents()
Добавлено @ 16:11
по-моему ему не многопоточность нужна, а проверка, нажал ли юзер кнопку Cancel |
|||
|
||||
| efedron |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 16.3.2005 Репутация: 4 Всего: 4 |
Run-time error
ну можно, конечно, doevents использовать, но это существенно снизит скорость выполнения процедуры... --------------------
Прежде чем совершить акт разрезания определенной материи целесообразно удостовериться в правильности всех произведенных измерений. |
|||
|
||||
| Akina |
|
||||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Чтобы не снижать критично, размещаем DoEvents не непосредственно в цикле, а во внутренней конструкции типа:
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||
|
|||||
| Feliastre |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 17.11.2004 Репутация: нет Всего: нет |
efedron угу... почти работает... только при закрытии отрубаецца...
Akina класс!!! Работает!!! |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Feliastre, с потоками в VB6 полная з%:ица. Как-то пытался с этим всем разобраться и понял, что лучше без многопоточности
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| Feliastre |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 17.11.2004 Репутация: нет Всего: нет |
D этой же теме хочу спросить ещё одно. Я делаю запрос из базы через компоненты ADO:
Только сам запрос не просто один селект, а примерно на две страницы. соответственно выборка данных происходит ДОЛГО. Можно ли открывать Рекордсет асинхронно? |
|||
|
||||
| Mephisto |
|
|||
![]() Волкъ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1818 Регистрация: 27.8.2003 Где: Питер Репутация: 2 Всего: 34 |
Я как-то читал литературку от майкрософта про вб, там написано что компилятор сам создает некую структуру потоков, и добавлять свои, либо удалять существующие они не рекомендуют.
Это касается версий 4,5,6. В вб.нет мультипоточнось допустима! Добавлено @ 12:02 Akina, держи +1. |
|||
|
||||
| efedron |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 16.3.2005 Репутация: 4 Всего: 4 |
Akina
такое использование doevents известно, но я предпочитаю создавать отдельный поток..ну не знаю..больше нравится мне что-ли --------------------
Прежде чем совершить акт разрезания определенной материи целесообразно удостовериться в правильности всех произведенных измерений. |
|||
|
||||
| Feliastre |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 17.11.2004 Репутация: нет Всего: нет |
efedron ну а ты можешь предложить работающий пример потоков. То что ты предложил - не пашет.
|
|||
|
||||
| Mephisto |
|
||||||||
![]() Волкъ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1818 Регистрация: 27.8.2003 Где: Питер Репутация: 2 Всего: 34 |
Не люблю повторятся, но:
Проверено, очень часто сами слетают. Необходимо выравнивать ручками. Вылетают, причем, в самых неожиданных местах. Добавлено @ 10:18 efedron, поправь запись:
Хоть бы на эту:
|
||||||||
|
|||||||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 7 Всего: 186 |
Akina, в чем проблема твоего кода: проверка происходит раз в 1000 проходов цикла. Я придумал решение: ф-ция GetInputState возвр. не ноль, если было сообщение от мыши или клавы.
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Run-time error
Ну на самом деле я кусок-то диранул из цикла, который еще до кучи прогрессором управлял... там оно было проще как я сделал. По сути же согласен с тобой полностью - твой код лучше. Впрочем для тех кто с API боится или что (или времени нет вспоминать) и мой сойдет. Только код поправь - в декларации алиас тут не нужен... и отпиши чтобы в ФАК вставили. PS. Впрочем есть еще один момент, который мой код разруливает, а твой нет - это тормоза перерисовки неактивных элементов экрана. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Mephisto |
|
|||
![]() Волкъ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1818 Регистрация: 27.8.2003 Где: Питер Репутация: 2 Всего: 34 |
Да, но медленее будет (насколько я думаю). 2Run-time error, вот если б именно обрабатывать сообщения для конкретной кнопки... Но, тогда можно забыть про всякие там перерисовки. |
|||
|
||||
| Exception |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 7 Всего: 186 |
Насчет алиаса - простите, случайно
я пороюсь в справочнике по апи, может что нарою... пока что
|
||||
|
|||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
сам понял что сказал? DoEvents как раз и нужен в основном для того чтобы они обрабатывались -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Mephisto |
|
|||
![]() Волкъ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1818 Регистрация: 27.8.2003 Где: Питер Репутация: 2 Всего: 34 |
Может я чего не знаю? Но мне кажется DoEvents за ставит перебрать все сообщения поступившие родительской форме, и естественно всех дочерних (кнопки, картинки...). А я имею ввиду принудительно заставить проработать только сообщения одной конкретной кнопки нажатие которой ожидается! Добавлено @ 15:50 Ну, про прорисовку остальных компонентов можно забыть! Это сообщение отредактировал(а) Mephisto - 14.4.2005, 15:50 |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
а-а-а... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Mephisto |
|
|||
![]() Волкъ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1818 Регистрация: 27.8.2003 Где: Питер Репутация: 2 Всего: 34 |
Необходимо создать оконную процедуру для этой кнопки и подменить ей стандартную, потом сделать так как ты предлогал в случае с DoEvents, только вызывать твою оконную процедуру с оброботкой только одного сообщения Click, ну можно еще сделать перерисовку данной кнопки. Работать должно быстрее.
Не знаю насколько понятно обьяснил, может попробую реализовать на примере, но сейчас не могу ничего обещать, на работе завал + учёба! |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 7 Всего: 186 |
В смысле WM_CLICK или как-то так? |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 7 Всего: 186 |
Я открыл Reflector'ом класс Систем.Виндовс.Формс.Аппликейшн и посмотрел исходники (это я про .нет). Дело в том, что в .нете есть тоже ф-ция DoEvents(). Так вот, там организован цикл обработки сообщений. Вот как работает DoEvents. Можно самим попариться с GetMessage и если сообщение не для кнопки, игнорировать его.
|
|||
|
||||
| Gannibal |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 742 Регистрация: 15.4.2003 Где: 010101 Репутация: 18 Всего: 17 |
вот статья почитайте интересная кстати
http://www.sources.ru/vb/vb_multithreading_in_vb.shtml http://www.sources.ru/vb/vb_multithreading_01.html Это сообщение отредактировал(а) M.E.G.U.S - 17.4.2005, 13:01 -------------------- Я родился в этом безумном мире - и Я сделаю всё чтобы в нём выжить! |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 7 Всего: 186 |
Читал я это...
|
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 7 Всего: 186 |
||||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |