title: Task.WaitAny() — Checking for results
body: <p>I have a series of Tasks in an array. If a Task is "Good" it returns a string. If it's "Bad": it return a null.</p>
  
  <p>I want to be able to run all the Tasks in parallel, and once the first one comes back that is "Good", then cancel the others and get the "Good" result.</p>
  
  <p>I am doing this now, but the problem is that all the tasks need to run, then I loop through them looking for the first good result.</p>
  
  <pre><code>List&lt;Task&lt;string&gt;&gt; tasks = new List&lt;Task&lt;string&gt;&gt;();
  Task.WaitAll(tasks.ToArray());
  </code></pre>