Go
Go
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 Go Downloads
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 := chilkat.NewSocket()
// --------------------------------------------------------------
// Synchronous call returning true/false
success = sock.Connect("example.com",443,true,5000)
// --------------------------------------------------------------
// Asynchronous call
c := make(chan *chilkat.Task)
go sock.ConnectAsync("example.com",443,true,5000,c)
task := <-c
// ...
// ...
// ...
// Get the status (true/false) value returned by the synchronous method called in the background thread.
success = task.GetResultBool()
// --------------------------------------------------------------
// Synchronous call returning an integer
count := sock.ReceiveCount()
// --------------------------------------------------------------
// Asynchronous call
c := make(chan *chilkat.Task)
go sock.ReceiveCountAsync( task := <-c
// ...
// ...
// ...
// Get the integer value returned by the synchronous method called in the background thread.
count = task.GetResultInt()
// --------------------------------------------------------------
// Synchronous call returning an string
s := sock.ReceiveString()
// --------------------------------------------------------------
// Asynchronous call
c := make(chan *chilkat.Task)
go sock.ReceiveStringAsync( task := <-c
// ...
// ...
// ...
// Get the string value returned by the synchronous method called in the background thread.
s = task.GetResultString()
// --------------------------------------------------------------
// Synchronous call returning an object
connection := sock.AcceptNextConnection(5000)
// --------------------------------------------------------------
// Asynchronous call
c := make(chan *chilkat.Task)
go sock.AcceptNextConnectionAsync( task := <-c
// ...
// ...
// ...
// 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 := chilkat.NewSocket()
if task.TaskSuccess() == true {
success = acceptedConnection.LoadTaskResult(task)
}
sock.DisposeSocket()
task.DisposeTask()
task.DisposeTask()
task.DisposeTask()
task.DisposeTask()
acceptedConnection.DisposeSocket()