public static List <T> ExecuteAsyncCommandList <T>(TimeSpan timeout, IEnumerable <ICommandList <T> > commands) { var results = new List <T>(); var waitHandles = new List <WaitHandle>(); foreach (ICommandList <T> command in commands) { var waitHandle = new AutoResetEvent(false); waitHandles.Add(waitHandle); var commandResultsHandler = new CommandResultsHandler <T>(results, command, waitHandle); ThreadPool.QueueUserWorkItem(ExecuteCommandList, commandResultsHandler); } WaitAll(waitHandles.ToArray(), timeout); return(results); }
public static List <T> ExecuteAsyncCommandList <T>(TimeSpan timeout, IEnumerable <ICommandList <T> > commands) { var results = new List <T>(); var waitHandles = new List <WaitHandle>(); foreach (ICommandList <T> command in commands) { var waitHandle = new AutoResetEvent(false); waitHandles.Add(waitHandle); var commandResultsHandler = new CommandResultsHandler <T>(results, command, waitHandle); #if NETCORE Task.Run(() => ExecuteCommandList(commandResultsHandler)); #elif NETFX_CORE ThreadPool.RunAsync(new WorkItemHandler((IAsyncAction) => ExecuteCommandList(commandResultsHandler))); #else ThreadPool.QueueUserWorkItem(ExecuteCommandList, commandResultsHandler); #endif } WaitAll(waitHandles.ToArray(), timeout); return(results); }