本文整理汇总了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);
}