, чтобы сделать заметку do-events понятной, я добавил небольшой ответ, чтобы добавить встроенный код ....
вот пример, где вы хотите, чтобы ваши do-события былиused.
view/new lay ; display the interface right now. (with no cards)
random-card: does [pick deck-cards random (length? deck-cards) - 1] ; - 1 since we don't want the back face to be picked.
; deal cards with a half second delay.
foreach c lc [f: get c set-face get c random-card wait 0.5]
do-events
здесь, любой код, который вы поместите после 'DO-EVENTS, будет выполнен после закрытия всех окон просмотра.
, что может быть таким, как очистка файла tmp, сохранение при выходе, диалоговое окно «Сохранить изменения» и т. д.
дополнительное примечание:
При создании графического кода рекомендуется размещать его в самом начале вашего приложения:
print " "
Откроется консоль, а затем перед ней появятся все окна просмотра.
Когда вы готовы поделиться, просто закомментируйте строку и удалите все операторы печати вваш код.
это полезно для 3 вещей:
1) Обычно это очень раздражает, когда консоль всегда всплывает над вашим приложением во время отслеживания (печати / проверки / и т.д.) некоторых вещей.после того, как ваше окно откроется.
2) Это также имеет более полезныеIde-эффект, показывающий, что ваше приложение завершает работу правильно, так как консоль ТАКЖЕ завершит работу, когда все ожидания завершены правильно.
В исходном примере, если вы добавите приведенный выше отпечаток, вы увидите, что консольникогда не закрывается, так что это означает, что приложение все еще работает без окон приложения, слушающих события.
3) Преимущество также заключается в том, что вы можете напрямую прекратить работу графического приложения, закрыв окно консоли.Это эффективно закрывает все окна и сразу же ждет и сокращает любой имеющийся у вас код «при выходе из приложения» (код после do-events).