The Action delegate in .NET is pretty handy when you need to invoke a method that takes no arguments. You assign the method name or an anonymous delegate/lambda to an Action delegate variable and just call the delegate variable to have your method invoked. But, what if you needed to invoke multiple actions simultaneously or wait for all actions to complete before the main thread can proceed? Maybe these actions are responsible for pre-fetching data from a service that the main thread requires or...