Beispiel #1
0
        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);
        }