title: Delphi getting TTask.IFuture without blocking main thread?
body: <p>In the example below (from Embarcadero's manual), the MyValue will be retrieved after 3 seconds about. But, the main gui thread would be blocked by the MyValue := FutureObject.Value; call which will wait for the result.
  If the Future code will take long, lets say 30 seconds, Windows will show a "... not responding" in the programs caption I guess.
  So whats the purpose of this when it will block the main gui thread?
  Is there any other way to get the result without blocking the main gui thread?</p>
  
  <pre><code>FutureObject := TTask.Future&lt;Integer&gt;(function: Integer
      begin
          Sleep(3000);
          Result := 16;
      end);
  // …
  MyValue := FutureObject.Value;
  </code></pre>