本文整理汇总了C#中ConcurrentSet.OfType方法的典型用法代码示例。如果您正苦于以下问题:C# ConcurrentSet.OfType方法的具体用法?C# ConcurrentSet.OfType怎么用?C# ConcurrentSet.OfType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ConcurrentSet
的用法示例。
在下文中一共展示了ConcurrentSet.OfType方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetDependentTypesAsync
private static async Task<IEnumerable<INamedTypeSymbol>> GetDependentTypesAsync(
INamedTypeSymbol type,
Solution solution,
IImmutableSet<Project> projects,
Func<INamedTypeSymbol, INamedTypeSymbol, bool> predicate,
ConditionalWeakTable<Compilation, ConcurrentDictionary<SymbolKey, List<SymbolKey>>> cache,
CancellationToken cancellationToken)
{
cancellationToken.ThrowIfCancellationRequested();
var dependentProjects = await DependentProjectsFinder.GetDependentProjectsAsync(type, solution, projects, cancellationToken).ConfigureAwait(false);
// If it's a type from source, then only other types from source could derive from
// it. If it's a type from metadata then unfortunately anything could derive from
// it.
bool locationsInMetadata = type.Locations.Any(loc => loc.IsInMetadata);
ConcurrentSet<ISymbol> results = new ConcurrentSet<ISymbol>(SymbolEquivalenceComparer.Instance);
cancellationToken.ThrowIfCancellationRequested();
var projectTasks = new List<Task>();
foreach (var project in dependentProjects)
{
projectTasks.Add(Task.Run(
async () => await GetDependentTypesInProjectAsync(type, project, solution, predicate, cache, locationsInMetadata, results, cancellationToken).ConfigureAwait(false), cancellationToken));
}
await Task.WhenAll(projectTasks).ConfigureAwait(false);
if (results.Any())
{
return results.OfType<INamedTypeSymbol>();
}
else
{
return SpecializedCollections.EmptyEnumerable<INamedTypeSymbol>();
}
}