Вопрос: Как Усыпить действие на время.не через sleep. Vb6 | Добавлено: 12.08.10 12:29 |
Автор вопроса: ![]() |
Всем доброго дня. Хотел бы спросить как усыпить определеное действие на время, но в тоже время что бы программа была активна (допустим те же включенные таймеры) например:
If upload = true then Усыпить процедуру или же if на - 3 секунды Else Усыпить на 10 секунд End if При этом мне не нужно использовать апи функцию sleep, ибо у меня находятся рабочие таймеры. Спасибо. |
Ответы | Всего ответов: 30 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #1 | Добавлено: 12.08.10 14:18 |
С какой целью ты усыпляешь?
В VB6 весь код выполняется в потоке UI, поэтому любая попытка что-то усыпить усыпит все приложение. Чтоб усыпить какой-то код на время, при этом не затрагивая поток UI, нужно использовать многопоточность (возможно в VB .NET, сложно в VB6). Может тебе можно как-то обходным путем сделать? Например сделать цикл с усыплением на 50 мс и вызовом Application.DoEvents, и далее проверка, прошло время "сна" или нет, если не прошло, снова усыпляешь на 50 мс. Криво, но визуально будет выглядеть так буд-то приложение не зависло. |
Номер ответа: 2 Автор ответа: ![]() ![]() ICQ: 345685652 Вопросов: 96 Ответов: 1212 |
Web-сайт: Профиль | Цитата | #2 | Добавлено: 12.08.10 14:57 |
ну
усыпит не трогая таймеры, но загружает при этом проц(или ядро) по полной. |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 246 Ответов: 3333 |
Web-сайт: Профиль | Цитата | #3 | Добавлено: 12.08.10 15:15 |
Профит:
Усыпит не трогая таймеры и не загружая ядро. |
Номер ответа: 4 Автор ответа: ![]() ![]() ICQ: 357911808 Вопросов: 118 Ответов: 1340 |
Web-сайт: Профиль | Цитата | #4 | Добавлено: 12.08.10 17:56 |
![]() |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #5 | Добавлено: 12.08.10 20:31 |
Не будет корректно работать если одновременно в нескольких местах захочет себя усыпить |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 246 Ответов: 3333 |
Web-сайт: Профиль | Цитата | #6 | Добавлено: 12.08.10 22:21 |
Мдя. Без многопоточности тут сразу приходят в голову два выхода. Первый уже написан, по сути - слипы будут накладываться друг на друга и выбираться самый длинный слип. Второй вариант - каждый вызов MySleep во время выполнения другого MySleep добавляет время ожидания. Если вася запустил слип на 1 секунду и через полсекунды, недождавшись, запустил еще один слип на 2, то в итоге отклик будет через 2,5 секунды. Вот, собственно, слип.
|
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 0 Ответов: 73 |
Профиль | Цитата | #7 | Добавлено: 15.08.10 02:39 |
Timer с боем курантов обнулится и Do While зависнит на сутки![]() |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #8 | Добавлено: 15.08.10 12:40 |
Мышки плакали, кололись, но продолжали грызть кактус |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 192496851 Вопросов: 75 Ответов: 3178 |
Профиль | Цитата | #9 | Добавлено: 15.08.10 13:07 |
:D |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #10 | Добавлено: 15.08.10 13:16 |
Мышки плакали, кололись, но продолжали грызть кактус
Это ты про многопоточность в VB6? Нихрена не выходит обойтись без многопоточности но все равно пишут на VB6? |
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #11 | Добавлено: 15.08.10 14:06 |
Да они вроде даже какую-то многопоточность за 13 лет умудрились смастерить, правда постоянно падает и отладчик глючит, но они все равно пруццо |
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() ![]() ![]() ICQ: adamis@list.ru Вопросов: 153 Ответов: 3632 |
Профиль | Цитата | #12 | Добавлено: 15.08.10 16:33 |
![]() ![]() ![]() ![]() ![]() |
Номер ответа: 13 Автор ответа: ![]() ![]() ICQ: 357911808 Вопросов: 118 Ответов: 1340 |
Web-сайт: Профиль | Цитата | #13 | Добавлено: 16.08.10 20:30 |
в примерах есть пногопоточность... |
Номер ответа: 14 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 246 Ответов: 3333 |
Web-сайт: Профиль | Цитата | #14 | Добавлено: 16.08.10 21:32 |
Надо замутить прогу, генерирующую обертку всех неймспейсов фраемворка в один жирный класс для VB6. Тогда можно будет писать под фраемворк на VB6.
Бо? PS: Или кто-то это уже придумал? :D |
Номер ответа: 15 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #15 | Добавлено: 17.08.10 09:38 |
Go and be that man |
|