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

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

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

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

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


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