Developer Stephen Bell from Embarcadero has a blog post up which explains how the new TTask IFuture functionality works in Delphi XE7 Firemonkey. Futures have been made available in the parallel programming library and work on Android, IOS, Windows, and Mac OSX. A future is sort of an asynchronous function that returns a result sometime later but if asked for it will return it now. So you can setup your TTask.Future to return a string or an integer for example and then continue running other code. When you go to access that string or integer variable later it will check to see if the TTask.Future has already completed (returned the data and populated the variable). If it has not returned the data or completed yet then it will synchronously wait for that asynchronous function to complete before moving on. Here is some sample code from the blog post demonstrating a Future: var
OneValue: IFuture <Integer>;
OneValue := TTask.Future<Integer>(function: Integer
Result := ComputeSomething;
Sleep(1000); // delay to show status
end); Head over and check out the full blog post and code snippets for using Futures in Delphi XE7 Firemonkey on Android, IOS, OSX, and Windows.
FMXExpress.com has over 700 tips and tricks for building cross platform apps on Android, IOS, OSX, Windows, and Linux with a single codebase and single UI using the FireMonkey framework found in Delphi and C++Builder.
FMXExpress covers top cross platform secrets for FireMonkey in C++Builder and Delphi XE5, XE6, XE7, XE8, Seattle, Berlin, Tokyo, Rio, and Sydney.