Не выходить из Sub Main'а...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Не выходить из Sub Main'а...

Сообщение Eduard » 06.06.2005 (Пн) 2:13

У меня в проге нету форм вообще, и есть один Sub Main (ну ещё фун-ци прочии). И когда все действия в Main выполняють, и процедура заканчиваеться, то нетрудно догодаться, с нейже и вся программа авершаеться... А мне нада чтобы по завершению Sub Main программа не завершалась...
Конечно я пробовал следущее, самое простое
Код: Выделить всё

Sub Main
. . .
. . .
. . .
Do
  DoEvents
Loop
End Sub

Но зато после этого ЦП спокойным не бывает вообще. Чё делать, мне не нада чтоб программа завершалась... :roll:
On Fatal Error Resume Next

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 06.06.2005 (Пн) 2:37

Что делает программа?
Изображение

Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Сообщение Eduard » 06.06.2005 (Пн) 2:40

Ну ладно: она просто запускает API таймер, который потом выполняет кое-какие действия...

Код: Выделить всё
Sub Main

lElapseTime = ((1000& * 60&) * 60&) * 8&
SetTimer 0&, 0&, lElapseTime, AddressOf TimerProc
Do: DoEvents
Loop
End Sub
On Fatal Error Resume Next

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 06.06.2005 (Пн) 3:14

Вызывай WaitMessage внутри (а лучше вместо) цикла.
Изображение

Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Сообщение Eduard » 06.06.2005 (Пн) 3:27

Фэнкс... Конечно, лучше стало... но так вообще все приложение замерает намертво... конечно процедура API таймера все ровно вызываться будет... а есть такие способы... чтобы приложение не "Не Отвечало" (как пишет диспечер задач)
On Fatal Error Resume Next

Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Сообщение Eduard » 06.06.2005 (Пн) 3:36

...странно когда в VB делаю только WaitMessage он его минует все ровно, когда в цикле - вообще VB вылетает напрочь, а в приложении тоже, просто один WaitMessage проходит как ни в чём не бывает, а в цикле всё ОК даже ЦП на нуле стоит! :wink:
On Fatal Error Resume Next

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 06.06.2005 (Пн) 14:43

Eduard писал(а):...странно когда в VB делаю только WaitMessage он его минует все ровно, когда в цикле - вообще VB вылетает напрочь, а в приложении тоже, просто один WaitMessage проходит как ни в чём не бывает, а в цикле всё ОК даже ЦП на нуле стоит! :wink:

Ты DoEvents-то после WaitMessage оставил, или вместе с циклом выбросил?
Надо оставить. WaitMessage ждёт прихода сообщения, а DoEvents его обрабатывает.
Изображение

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 06.06.2005 (Пн) 15:48

Eduard
А не проще сделать форму с
Visible=False
ShowInTaskbar=False
и повесить на ней обычный таймер вместо API?

Alexander N. Samarin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 397
Зарегистрирован: 05.03.2005 (Сб) 20:59
Откуда: Интернат 18 (СУНЦ МГУ), комната 214А, кровать посередине

Сообщение Alexander N. Samarin » 07.06.2005 (Вт) 13:05

Форма ест место
На это не смотрите! Это не подпись!!!!!!

Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Сообщение Eduard » 09.06.2005 (Чт) 7:02

tyomitch писал(а):Ты DoEvents-то после WaitMessage оставил, или вместе с циклом выбросил?
Надо оставить. WaitMessage ждёт прихода сообщения, а DoEvents его обрабатывает.

:roll: Ничё если я DoEvents поставил перед WaitMessage и всё это в цикле.... работает вроде всё как нада :P
tyomitch ты просто молодец!
On Fatal Error Resume Next


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot, Yandex-бот и гости: 176

    TopList