Unicode C
Unicode C
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 Unicode C Downloads
#include <C_CkSocketW.h>
#include <C_CkTaskW.h>
void ChilkatSample(void)
{
BOOL success;
HCkSocketW sock;
HCkTaskW task;
int count;
const wchar_t *s;
HCkSocketW connection;
HCkSocketW acceptedConnection;
success = FALSE;
// 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 (TRUE/FALSE), get returned value by calling GetResultBool.
// For example..
sock = CkSocketW_Create();
// --------------------------------------------------------------
// Synchronous call returning TRUE/FALSE
success = CkSocketW_Connect(sock,L"example.com",443,TRUE,5000);
// --------------------------------------------------------------
// Asynchronous call
task = CkSocketW_ConnectAsync(sock,L"example.com",443,TRUE,5000);
// ...
CkTaskW_Run(task);
// ...
// ...
// Get the status (TRUE/FALSE) value returned by the synchronous method called in the background thread.
success = CkTaskW_GetResultBool(task);
// --------------------------------------------------------------
// Synchronous call returning an integer
count = CkSocketW_ReceiveCount(sock);
// --------------------------------------------------------------
// Asynchronous call
task = CkSocketW_ReceiveCountAsync(sock);
// ...
CkTaskW_Run(task);
// ...
// ...
// Get the integer value returned by the synchronous method called in the background thread.
count = CkTaskW_GetResultInt(task);
// --------------------------------------------------------------
// Synchronous call returning an string
s = CkSocketW_receiveString(sock);
// --------------------------------------------------------------
// Asynchronous call
task = CkSocketW_ReceiveStringAsync(sock);
// ...
CkTaskW_Run(task);
// ...
// ...
// Get the string value returned by the synchronous method called in the background thread.
s = CkTaskW_getResultString(task);
// --------------------------------------------------------------
// Synchronous call returning an object
connection = CkSocketW_AcceptNextConnection(sock,5000);
// --------------------------------------------------------------
// Asynchronous call
task = CkSocketW_AcceptNextConnectionAsync(sock);
// ...
CkTaskW_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).
acceptedConnection = CkSocketW_Create();
if (CkTaskW_getTaskSuccess(task) == TRUE) {
success = CkSocketW_LoadTaskResult(acceptedConnection,task);
}
CkSocketW_Dispose(sock);
CkSocketW_Dispose(acceptedConnection);
}