powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Windows и "Программа не отвечает"
9 сообщений из 9, страница 1 из 1
Windows и "Программа не отвечает"
    #39097854
VB6 programmer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулся с следующей проблемой. Нужно сделать подбор для решения задачек (например, судоку). В процессе на экран выводятся те числа, которые компьютер проверяет в данный момент. НО! Компьютер через секунд 10 думает, что программа зависла. Он пишет "Программа не отвечает" и прекращается показывание символов. Вопрос: как сделать так, чтобы подбор существенно не замедлялся, а компьютер не думал, что он завис?
P. S. Если вставить MsgBox, например, то все нормально, но тогда требуется вмешание человека, а хочется, чтобы процесс шел автономно.
...
Рейтинг: 0 / 0
Windows и "Программа не отвечает"
    #39097869
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно вставлять в цикл DoEvents.

Однако, надо понимать, что при его использовании пользователь сможет что-то сделать (изменить значения поля, нажать кнопку, закрыть считающую форму, переключиться в другую форму). Поэтому желательно заблокировать все критичные поля и кнопки и предусмотреть прерывание цикла расчета, если пользователь запросил закрытие формы.
...
Рейтинг: 0 / 0
Windows и "Программа не отвечает"
    #39097942
VB6 programmer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Можно как нибудь на примере показать, как DoEvents использовать? Например, в тройном цикле, ато я не понимаю, как на практике. А так, суди по описанию, эта функция - как раз то, что мне нужно, и пример будет очень кстати.
В любом случае, спасибо за помощь!
...
Рейтинг: 0 / 0
Windows и "Программа не отвечает"
    #39097952
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поставь внутрь внутреннего цикла, да и все
...
Рейтинг: 0 / 0
Windows и "Программа не отвечает"
    #39098486
VB6 programmer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

То есть DoEvents - это вроде Sleep? Тогда последний вопрос - в какой форме его использовать? В смысле, например, слип используется так: Sleep (1000)
А как используется DoEvents?
...
Рейтинг: 0 / 0
Windows и "Программа не отвечает"
    #39098498
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VB6 programmerТо есть DoEvents - это вроде Sleep?
Нет. DoEvents - это "эй, операционная система, если тебе надо что-то сделать, делай это сейчас".
...
Рейтинг: 0 / 0
Windows и "Программа не отвечает"
    #39098560
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VB6 programmerТо есть DoEvents - это вроде Sleep?Принципиально разное. Sleep блокирует поток на указанное время и отдает такты ОС. DoEvents даст выполнится тому, что ждет в очереди (оконные события, таймеры и т.п.), а потом продолжает код с того же места. Поэтому и надо быть внимательным, чтобы посторонний код не запорол работу текущего алгоритма (изменив переменные или выгрузив форму, например)

VB6 programmerА как используется DoEvents?Просто воткнуть в середину цикла и все.
...
Рейтинг: 0 / 0
Windows и "Программа не отвечает"
    #39098578
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть DoEvents не тратит время. Если в очереди пусто, то управление возвращается в код сразу.
...
Рейтинг: 0 / 0
Windows и "Программа не отвечает"
    #39098619
VB6 programmer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо огромное! Выручили!
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Windows и "Программа не отвечает"
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]