2016-12-11 4 views
1

Dieser sehr einfache Code verhält sich nicht so, wie es sollte und ich verstehe nicht ganz warum.App Inventor - Logik

App Inventor Code:

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

Hier ist das Problem. ProcedureXYZ dauert 5 Sekunden. So sollte Label1 "Warten" angezeigt haben, aber das tut es nicht. Stattdessen werden Zeile # 1, # 2, # 3 gleichzeitig ausgeführt. Mit anderen Worten, es verschwindet für 5 Sekunden und dann wird "Fertig" angezeigt (das ist, weil es sofort "Warten" überschreibt).

So für 5 Sekunden scheint meine App eingefroren, bis ProcedureXYZ seine Berechnungen abgeschlossen ist. Meine Frage ist, Wie zeige ich "Warten" an, wenn ProcedureXYZ 5 Sekunden dauert, um abzuschließen?

Ich versuche mit Uhr zu starten die "Wait" Nachricht, aber das funktioniert auch nicht. Das einzige, was funktioniert, ist eine Warnmeldung anzuzeigen, aber ich möchte keine Popup-Nachricht.

+0

allgemein sagen, müssen Sie Threads. – rupinderjeet

Antwort

0

Warum dies in App Inventor wie das nicht funktioniert, wird hier erklärt:
The model of event processing in App Inventor durch Lyn

Sie erhalten eine Clock Komponente, dies zu tun verwenden müssen, Pseudo-Code unten. Setzen Sie im Designer einen sehr kleinen Wert TimerInterval (zum Beispiel 10 Millisekunden) und setzen Sie die Eigenschaft TimerEnabled auf false.

Button1.Click Ereignis

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

Clock.Timer Ereignis

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