Yield: Kontrolle zurückgeben ohne zu beenden

Methode der Klasse: ModlEnv

  TeamWiSE.TAA.YieldEnum Yield ( System.UInt32 dwTimeOut )
  TeamWiSE.TAA.YieldEnum Yield ( )

Yield entspricht mit einigen Einschränkungen einem UnRegister mit anschließendem neuem Register:

Wie beim UnRegister, geht die Kontrolle an das aufrufende Modul zurück; jedoch wird das Modul nicht beendet, sondern wartet darauf, wieder benutzt zu werden. Die lokalen Datenobjekte, die beim UnRegister zerstört werden, bewahrt die TAA-Infrastruktur beim Yield für weitere Benutzung auf.

Sobald die TAA-Infrastruktur feststellt, dass der Baustein wieder benötigt wird, so führt sie automatisch einen neuen Register durch und startet dasselbe Modul neu. (Zum Vergleich: Beim „echten“ UnRegister/Register würde eine neue Instanz des Moduls gestartet, beim Yield wird dieselbe Instanz lediglich durchgestartet). Dadurch bleiben auch die in .Net angelegten Variablen erhalten.

Über das Argument dwTimeout können Sie angeben, nach wieviel Millisekunden (z.B. 30 Sekunden = 30.000 Millisekunden) die Infrastruktur auf jeden Fall die Kontrolle an den Baustein zurückgeben soll, auch wenn die Verarbeitung, auf die er wartet, noch nicht beendet ist. Wenn Sie nichts angeben, wird als Default 300 Millisekunden angenommen.

Mögliche Rückkehrwerte von Yield, auf die der Baustein reagieren muss, sind in der Klasse YieldEnum festgelegt:

Wenn das Modul nach der Wartezeit zum Zuge kommt, hat es die Möglichkeit, z.B. eine Warteanzeige (Uhr o.ä.) zu aktualisieren, und kann dafür sorgen, dass für Fenster, die noch auf dem Bildschirm sichtbar sind, ein Refresh erfolgt. Es ist auch möglich, das Modul zu beenden, um Ressourcen freizugeben (kein UnRegister mehr nötig).

Einschränkungen und Hinweise

Alternativ können die Fenster während der Wartezeit unsichtbar gemacht werden. Nicht vergessen, nach dem Resume die Fenster wieder sichtbar zu machen und die Controls wieder zu aktivieren!