当前位置: 首页>>代码示例>>C#>>正文


C# ConcurrentStack.SelectMany方法代码示例

本文整理汇总了C#中ConcurrentStack.SelectMany方法的典型用法代码示例。如果您正苦于以下问题:C# ConcurrentStack.SelectMany方法的具体用法?C# ConcurrentStack.SelectMany怎么用?C# ConcurrentStack.SelectMany使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ConcurrentStack的用法示例。


在下文中一共展示了ConcurrentStack.SelectMany方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Run

        public IEnumerable<MethodExecutionReport> Run()
        {
            var tasks = new List<Task>();
            var mapRunnerMethod = new Dictionary<IMethodRunner, List<Method>>();

            foreach (var runner in MethodRunners)
            {
                mapRunnerMethod.Add(runner, new List<Method>());
            }

            var enumRunner = MethodRunners.GetEnumerator();
            var assembly = Assemblies.First();
            foreach (var type in assembly.TestClasses)
            {
                foreach (var method in type.TestMethods)
                {
                    if (!enumRunner.MoveNext())
                    {
                        enumRunner = MethodRunners.GetEnumerator();
                        enumRunner.MoveNext();
                    }
                    if (assembly.AssemblyInit != null)
                    {
                        if (!mapRunnerMethod[enumRunner.Current].Contains(assembly.AssemblyInit))
                        {
                            mapRunnerMethod[enumRunner.Current].Add(assembly.AssemblyInit);
                        }
                    }
                    if (type.TestInit != null)
                    {
                        mapRunnerMethod[enumRunner.Current].Add(type.TestInit);
                    }
                    mapRunnerMethod[enumRunner.Current].Add(method);
                    if (type.TestCleanup != null)
                    {
                        mapRunnerMethod[enumRunner.Current].Add(type.TestCleanup);
                    }
                    if (assembly.AssemblyCleanup != null)
                    {
                        if (!mapRunnerMethod[enumRunner.Current].Contains(assembly.AssemblyCleanup))
                        {
                            mapRunnerMethod[enumRunner.Current].Add(assembly.AssemblyCleanup);
                        }
                    }
                }
            }

            var report = new ConcurrentStack<IEnumerable<MethodExecutionReport>>();

            foreach (var runner in mapRunnerMethod.Keys)
            {
                var r = runner; /* Enclose the correct value for the lambda */
                tasks.Add(Task.Factory.StartNew(() =>
                {
                    report.Push(r.Invoke(mapRunnerMethod[r]));
                }));
            }

            Task.WaitAll(tasks.ToArray());

            return report.SelectMany(r => r);
        }
开发者ID:sigomatix,项目名称:MyCode,代码行数:62,代码来源:Runner.cs


注:本文中的ConcurrentStack.SelectMany方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。