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