2016-12-11 42 views
1

这个非常简单的代码行为不应该如此,我不太明白为什么。应用发明 - 逻辑

应用发明代码:

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

为什么这应用发明没有这样的工作,在这里解释:
The model of event processing in App Inventor林恩

你将不得不使用一个Clock组件要做到这一点,请参见下面的伪代码。在Designer中,设置非常小的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"