|
Windows и "Программа не отвечает"
|
|||
---|---|---|---|
#18+
Столкнулся с следующей проблемой. Нужно сделать подбор для решения задачек (например, судоку). В процессе на экран выводятся те числа, которые компьютер проверяет в данный момент. НО! Компьютер через секунд 10 думает, что программа зависла. Он пишет "Программа не отвечает" и прекращается показывание символов. Вопрос: как сделать так, чтобы подбор существенно не замедлялся, а компьютер не думал, что он завис? P. S. Если вставить MsgBox, например, то все нормально, но тогда требуется вмешание человека, а хочется, чтобы процесс шел автономно. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 23:07 |
|
Windows и "Программа не отвечает"
|
|||
---|---|---|---|
#18+
Можно вставлять в цикл DoEvents. Однако, надо понимать, что при его использовании пользователь сможет что-то сделать (изменить значения поля, нажать кнопку, закрыть считающую форму, переключиться в другую форму). Поэтому желательно заблокировать все критичные поля и кнопки и предусмотреть прерывание цикла расчета, если пользователь запросил закрытие формы. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 23:55 |
|
Windows и "Программа не отвечает"
|
|||
---|---|---|---|
#18+
Shocker.Pro, Можно как нибудь на примере показать, как DoEvents использовать? Например, в тройном цикле, ато я не понимаю, как на практике. А так, суди по описанию, эта функция - как раз то, что мне нужно, и пример будет очень кстати. В любом случае, спасибо за помощь! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 08:17 |
|
Windows и "Программа не отвечает"
|
|||
---|---|---|---|
#18+
Поставь внутрь внутреннего цикла, да и все ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 08:48 |
|
Windows и "Программа не отвечает"
|
|||
---|---|---|---|
#18+
Shocker.Pro, То есть DoEvents - это вроде Sleep? Тогда последний вопрос - в какой форме его использовать? В смысле, например, слип используется так: Sleep (1000) А как используется DoEvents? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 15:05 |
|
Windows и "Программа не отвечает"
|
|||
---|---|---|---|
#18+
VB6 programmerТо есть DoEvents - это вроде Sleep? Нет. DoEvents - это "эй, операционная система, если тебе надо что-то сделать, делай это сейчас". ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 15:13 |
|
Windows и "Программа не отвечает"
|
|||
---|---|---|---|
#18+
VB6 programmerТо есть DoEvents - это вроде Sleep?Принципиально разное. Sleep блокирует поток на указанное время и отдает такты ОС. DoEvents даст выполнится тому, что ждет в очереди (оконные события, таймеры и т.п.), а потом продолжает код с того же места. Поэтому и надо быть внимательным, чтобы посторонний код не запорол работу текущего алгоритма (изменив переменные или выгрузив форму, например) VB6 programmerА как используется DoEvents?Просто воткнуть в середину цикла и все. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 15:42 |
|
Windows и "Программа не отвечает"
|
|||
---|---|---|---|
#18+
То есть DoEvents не тратит время. Если в очереди пусто, то управление возвращается в код сразу. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 15:54 |
|
|
start [/forum/topic.php?fid=60&tid=2155734]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 298ms |
total: | 432ms |
0 / 0 |