Is there a callback for when a task is completed in Task.WhenAll
<p>Suppose I have the following:</p>

<pre><code>IEnumerable&lt;Task&lt;TimeSpan&gt;&gt; tasks = //...
TimeSpan[] results = await Task.WhenAll(tasks);
// Handle results
</code></pre>

<p>By the time I can handle the results all the task must have finished.</p>

<p>Is there a way to handle each result <em>on demand</em>?</p>

<p>Like registering a delegate / callback that will get executed when a task is completed:</p>

<pre><code>IEnumerable&lt;Task&lt;TimeSpan&gt;&gt; tasks = //...
await Task.WhenAll(tasks, result =&gt;
{
   // A task has finished. This will get executed.
   // result is of type TimeSpan
});
</code></pre>