Canceling asynchronous requests
- Last Updated: October 14, 2020
- 2 minute read
- OpenEdge
- Version 13.0
- Documentation
You can cancel all asynchronous requests that are executing or pending on
behalf of the client on a particular server by executing the CANCEL-REQUESTS( ) method on the server object handle. This method raises
the STOP condition in the context of the asynchronous
procedure currently executing and causes results to be returned for any pending
asynchronous requests, as described in the following paragraph.
The associated event procedures or methods execute for all canceled
requests the next time the client blocks for I/O or executes the PROCESS
EVENTS statement. Each event procedure or method
receives the following results, depending on the final state of its corresponding
asynchronous request:
- Any request that is completed at the time of
cancellation but whose event procedure or method has not yet run — The event
procedure or method receives all input parameters passed from the request, and the
COMPLETEattribute on the asynchronous request handle (SELF) is set toTRUE. This is the same result as a normal asynchronous request completion. - Any request that is executing and that is stopped
in response to the
CANCEL-REQUESTS( )method — The event procedure or method input parameters are set to theUnknown value (?), and theCOMPLETEattribute on the asynchronous request handle (SELF) is set toTRUE. If the stopped request does not handle theSTOPcondition raised by theCANCEL-REQUESTS( )method, theSTOPattribute on the asynchronous request handle (SELF) is also set toTRUE. This is the same result as if theSTOPcondition were raised in the server session running the request. -
Any request that is removed from the send queue prior to its
execution — The event procedure or method input parameters are set to the
Unknown value (?)(or unchanged forTEMP-TABLEparameters), and theCANCELLEDattribute on the asynchronous request handle (SELF) is set toTRUE. This result can only occur for a request that is canceled while waiting for execution.
DISCONNECT( ) method, this also cancels all
asynchronous requests still running or pending on the server for this particular client.
For more information, see Disconnecting from a PAS for OpenEdge instance.