Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Image AddedImage Removed

VLF-ONE filters and command handlers now inherit new and simplified asynchronous handling methods.

These new methods automatically implement the most common activities performed in an asynchronous interaction with a server module, such as:

...

For example, a button Click event handler could queue up an asynchronous operation identified as Operation_1 like this:  
Image Removed
Image Added

Ultimately operation 1 is handled (asynchronously) by an overwritten method like this:

Image Added
Image Removed     
Note how the associated #COM_OWNER.avQueueAsyncOperation can pass (ie: send) two simple string parameters and two object references along in the queued asynchronous request.  

Multiple asynchrounous requests can be queued.

The avExecuteAsyncOperation method can queue further (resultant) asynchronous operations.

You can also listen for event avAsyncOperationsCompleted.

This small example command handler demonstrates several of the major asynchronous features:
 

     Begin_Com Role(*EXTENDS #VF_AC010O) Height(241) Width(457)
Define_Com Class(#PRIM_LABL) Name(#VisibleCounter) Displayposition(1) Height(129) Left(16) Parent(#COM_OWNER) Tabposition(1) Tabstop(False) Top(56) Width(401) Verticalalignment(Center) Style(#BigFont) Caption('Stopped') Alignment(Center)
Define_Com Class(#Prim_phbn) Name(#StartCount) Parent(#COM_OWNER) Caption('Start Count') Displayposition(3) Tabposition(3)
Define_Com Class(#Prim_phbn) Name(#StopCount) Parent(#COM_OWNER) Caption('Stop Count') Displayposition(2) Tabposition(2) Left(96)
Define_Com Class(#Prim_vs.Style) Name(#BigFont) Fontsize(72) Textcolor(Blue)
     *------------------------------------------------------------------------------
Evtroutine Handling(#StartCount.Click)
Define_Com Class(#std_Int) Name(#PhysicalCounter)
#Com_Owner.avQueueAsyncOperation Operationid(Count) Parameterreference1(#PhysicalCounter)
Endroutine
 *------------------------------------------------------------------------------
Evtroutine Handling(#StopCount.Click)
#Com_Owner.avQueueAsyncOperation Operationid(Stop)
Endroutine
 *------------------------------------------------------------------------------
Mthroutine Name(avExecuteAsyncOperation) Options(*REDEFINE)
Define_Com Class(#std_Int) Name(#UseCounter) Reference(*DYNAMIC)
Case (#OperationID)
When (= Count)
#UseCounter <= #ParameterReference1 *As #Std_Int
#UseCounter += 1
#VisibleCounter := #UseCounter.AsString
#Com_Owner.avQueueAsyncOperation Operationid(Count) Parameterreference1(#UseCounter)
When (= Stop)
#VisibleCounter := "Stopped"
#KillOtherPendingOperations := True
Otherwise
#SYS_WEB.Alert Caption("Unknown operation id " + #OperationID)
Endcase
Endroutine
End_Com

...

When executed it looks like this:

...


Image Added