Page 1 of 1

Funciones asíncronas en el futuro Xailer

Posted: Sun Sep 01, 2019 12:05 pm
by ignacio


Ejemplos de uso:
1 ) Con comandos

Code: Select all

METHOD ASYNC Btn1Click( oSender ) CLASS TForm1
...
   AWAIT INLINE {||
         FOR nFor := 1 TO 100
            Sleep(10)
            SYNCHRO INLINE {|| ::oPb1:nValue := nFor }
         NEXT
      RETURN "Exit from first serie"
      }

   // lastAwait is a private VAR with the return value of previous Await command

   AWAIT INLINE {||
      SYNCHRO INLINE { ||  Msginfo( lastWait ) }

      RETURN NIL
      }
RETURN NIL


2) Version POO:

Code: Select all

   LOCAL oFuture AS CLASS TFuture
   LOCAL oTask AS CLASS TFutureTask
   LOCAL bWork
   LOCAL nFor

   oFuture := TFuture():New()

   bWork := { ||
      FOR nFor := 1 TO 100
         Sleep(30)
         oFuture:AddSynchroTask( {||::oPb3:nValue := nFor } )
      NEXT
      RETURN "Exit from third serie"
   }

   oFuture:OnComplete := {|| Msginfo( oTask:ReturnValue )  }
   oTask := oFuture:AddThreadTask( bWork )

 RETURN Nil

Re: Funciones asíncronas en el futuro Xailer

Posted: Mon Sep 02, 2019 4:51 am
by Carlos Ortiz
Muchas gracias !!!

Re: Funciones asíncronas en el futuro Xailer

Posted: Tue Sep 17, 2019 11:26 am
by bingen
Esto va a dar mucho juego, ahora usamos varios Threads (unos 6) para multiples cosas y van muy bien pero son algo más liosos que lo que planteas.

Gracias.