Tcl
Tcl
Understanding Async Function Return Values
See more Async Examples
Explains how to get the return value of the function called synchonously in the background thread.Chilkat Tcl Downloads
load ./chilkat.dll
set success 0
# Some Chilkat functions can be called asynchronously.
# If a function "Func" can be called asynchronously, there will be a corresponding "FuncAsync" function that returns a Task object.
#
# When Task.Run is called, the synchronous "Func" runs in a background thread.
#
# For Chilkat methods that return a status (1/0), get returned value by calling GetResultBool.
# For example..
set sock [new_CkSocket]
# --------------------------------------------------------------
# Synchronous call returning 1/0
set success [CkSocket_Connect $sock "example.com" 443 1 5000]
# --------------------------------------------------------------
# Asynchronous call
# task is a CkTask
set task [CkSocket_ConnectAsync $sock "example.com" 443 1 5000]
# ...
CkTask_Run $task
# ...
# ...
# Get the status (1/0) value returned by the synchronous method called in the background thread.
set success [CkTask_GetResultBool $task]
# --------------------------------------------------------------
# Synchronous call returning an integer
set count [CkSocket_ReceiveCount $sock]
# --------------------------------------------------------------
# Asynchronous call
set task [CkSocket_ReceiveCountAsync $sock]
# ...
CkTask_Run $task
# ...
# ...
# Get the integer value returned by the synchronous method called in the background thread.
set count [CkTask_GetResultInt $task]
# --------------------------------------------------------------
# Synchronous call returning an string
set s [CkSocket_receiveString $sock]
# --------------------------------------------------------------
# Asynchronous call
set task [CkSocket_ReceiveStringAsync $sock]
# ...
CkTask_Run $task
# ...
# ...
# Get the string value returned by the synchronous method called in the background thread.
set s [CkTask_getResultString $task]
# --------------------------------------------------------------
# Synchronous call returning an object
# connection is a CkSocket
set connection [CkSocket_AcceptNextConnection $sock 5000]
# --------------------------------------------------------------
# Asynchronous call
set task [CkSocket_AcceptNextConnectionAsync $sock]
# ...
CkTask_Run $task
# ...
# ...
# Get the object returned by the synchronous method called in the background thread.
# We do this a little differently. We create an new object of the same type,
# and then load it with the returned object (assuming it was not null).
set acceptedConnection [new_CkSocket]
if {[CkTask_get_TaskSuccess $task] == 1} then {
set success [CkSocket_LoadTaskResult $acceptedConnection $task]
}
delete_CkSocket $sock
delete_CkSocket $acceptedConnection