C# - Asyncronously execute an Action for a period of time and report the amount of executions when done