Browse Source

Analyzer: simplify concurrency handling

pull/170/head
Ed Harvey 15 years ago
parent
commit
e54bade36a
  1. 9
      ILSpy/TreeNodes/Analyzer/AnalyzedMethodUsedByTreeNode.cs

9
ILSpy/TreeNodes/Analyzer/AnalyzedMethodUsedByTreeNode.cs

@ -30,7 +30,7 @@ namespace ICSharpCode.ILSpy.TreeNodes.Analyzer
{ {
private readonly MethodDefinition analyzedMethod; private readonly MethodDefinition analyzedMethod;
private readonly ThreadingSupport threading; private readonly ThreadingSupport threading;
private Lazy<Hashtable> foundMethods; private Hashtable foundMethods;
private object hashLock = new object(); private object hashLock = new object();
public AnalyzedMethodUsedByTreeNode(MethodDefinition analyzedMethod) public AnalyzedMethodUsedByTreeNode(MethodDefinition analyzedMethod)
@ -69,7 +69,7 @@ namespace ICSharpCode.ILSpy.TreeNodes.Analyzer
private IEnumerable<SharpTreeNode> FetchChildren(CancellationToken ct) private IEnumerable<SharpTreeNode> FetchChildren(CancellationToken ct)
{ {
foundMethods = new Lazy<Hashtable>(LazyThreadSafetyMode.ExecutionAndPublication); foundMethods = new Hashtable();
var analyzer = new ScopedWhereUsedScopeAnalyzer<SharpTreeNode>(analyzedMethod, FindReferencesInType); var analyzer = new ScopedWhereUsedScopeAnalyzer<SharpTreeNode>(analyzedMethod, FindReferencesInType);
foreach (var child in analyzer.PerformAnalysis(ct)) { foreach (var child in analyzer.PerformAnalysis(ct)) {
@ -109,12 +109,11 @@ namespace ICSharpCode.ILSpy.TreeNodes.Analyzer
private bool HasAlreadyBeenFound(MethodDefinition method) private bool HasAlreadyBeenFound(MethodDefinition method)
{ {
Hashtable hashtable = foundMethods.Value;
lock (hashLock) { lock (hashLock) {
if (hashtable.Contains(method)) { if (foundMethods.Contains(method)) {
return true; return true;
} else { } else {
hashtable.Add(method, null); foundMethods.Add(method, null);
return false; return false;
} }
} }

Loading…
Cancel
Save