2016-12-11 4 views
1

Этот очень простой код не ведет себя так, как должен, и я не совсем понимаю, почему.App Inventor - logic

App Inventor код:

When Button1.Click 
#1 set Label1.Text to "Wait" 
#2 call ProcedureXYZ 
#3 set Label1.Text to "Done" 

Вот проблема. ProcedureXYZ занимает 5 секунд. Таким образом, Label1 должен был отобразить «Подождите», но это не так. Вместо этого строки # 1, # 2, # 3 выполняются одновременно. Другими словами, он исчезает в течение 5 секунд, а затем отображается «Готово» (это потому, что он немедленно отменяет «Подождите»).

Так что в течение 5 секунд мое приложение, кажется, заморожено до тех пор, пока ProcedureXYZ не завершит свои расчеты. Мой вопрос: Как отобразить «Подождите», когда ProcedureXYZ занимает 5 секунд?

Я пытаюсь использовать часы для запуска сообщения «Подождите», но это тоже не сработает. Единственное, что работает, - отобразить предупреждающее сообщение, но мне не нужно всплывающее сообщение.

+0

вообще говоря, вам нужна тема. – rupinderjeet

ответ

0

Почему это в App Inventor не работает так, как описано здесь:
The model of event processing in App Inventor от Lyn

Вы должны будете использовать Clock компонент, чтобы сделать это, см псевдокод ниже. В конструкторе установите очень маленький TimerInterval (например, 10 миллисекунд) и установите для свойства TimerEnabled значение false.

Button1.Click событие

set Label1.Text to "Wait" 
set Clock.TimerEnabled to true 

Clock.Timer события

set Clock.TimerEnabled to false 
call ProcedureXYZ 
set Label1.Text to "Done"