Lade...
 

ReturnStack

ReturnStack

ReturnStack

Stack
Stack Position Beschreibung
Stack(In) Top beliebig
  Top-1 ...
Stack(Out) Top -

Mit dieser Anweisung kann der Empfänger einer Message dem Sender Werte zurückgeben. ReturnStack nimmt alle Einträge vom Stack, um sie nach Beendigung des auslösenden SendMsg-Statements als Rückgabewert(e) auf den Stack des Senders zu kopieren.

Achtung: ReturnStack bricht die Abarbeitung der aktuellen Message nicht ab. Falls dies erwünscht ist, dann sollte die Kombination ReturnStack return verwendet werden.

Hinweis:  ReturnStack ist nur sinnvoll als Reaktion auf eine Message!

Beispiel:

Aufrufendes Modul: Ein Objekt wird auf den Stack gelegt und die Message aufgerufen.

object SendMsg(GET_UNIQUEID) Attention(EndTXN)

Modul, welches die Message empfängt. Vor dem Ende der Ausführungsliste dieser Message wird durch ReturnStack angegeben, dass der aktuelle Stack erhalten bleibt:

GET_UNIQUEID: Copy(uniqueID) ReturnStack

 

Falls eine Message von mehreren Modulen / Widgets behandelt wird, dann kann ReturnStack verwendet werden, um die einzelnen Ergebnisse gesammelt an den Aufrufer von SendMsg zu liefern.

Bsp:

Sender Receiver A Receiver B
SendMsg(GET_NUMBER)
+
//-> 3 should be on stack
GET_NUMBER: 1 ReturnStack
GET_NUMBER: 2 ReturnStack

Der Sender sieht als Ergebnis den kombinierten ReturnStack beider Empfänger. Bei mehreren Empfängern wird die Nachricht an alle Empfänger sequenziell geschickt, wobei die Reihenfolge (und damit die Reihenfolge im ReturnStack) nicht festgelegt ist. Der Ablauf ist in der folgenden Abbildung skizziert.

ReturnStack   Multiple Receivers

 

Siehe auch