Running async tasks and cancelling after a timeout if necessary - follow up (1)
Looks good. One potential improvement is to make WaitAll method async. Maybe:

//return false on timeout
public static async Task&lt;bool&gt; RunAsync(this IEnumerable&lt;Action&lt;CancellationToken&gt;&gt; actions, TimeSpan timeout)


This way you can support two additional scenarios:

actions.RunAsync().Wait(); //sync wait (what you currently have)
await actions.RunAsync(); //await
actions.RunAsync().ContinueWith(...); //async call, no waiting


You will probably have to use Task.WhenAll instead of Task.WaitAll to make this happen.

Also  1s timeout is not something I would expect when I see actions.WaitAll() in code. Default timeout in all BCL classes I can think of is Infinite, you should probably follow this practice for consistancy.