Browse Source

Use ParserService.ParseAsync for view initialization

newNRILSpyDebugger
Siegfried Pammer 12 years ago
parent
commit
a0ec3c4942
  1. 18
      src/AddIns/DisplayBindings/ILSpyAddIn/ILSpyDecompilerService.cs
  2. 2
      src/AddIns/DisplayBindings/ILSpyAddIn/ILSpyParser.cs
  3. 14
      src/AddIns/DisplayBindings/ILSpyAddIn/ViewContent/DecompiledViewContent.cs

18
src/AddIns/DisplayBindings/ILSpyAddIn/ILSpyDecompilerService.cs

@ -114,18 +114,12 @@ namespace ICSharpCode.ILSpyAddIn @@ -114,18 +114,12 @@ namespace ICSharpCode.ILSpyAddIn
}
}
public static ILSpyUnresolvedFile DecompileType(DecompiledTypeReference name)
public static ILSpyFullParseInformation DecompileType(DecompiledTypeReference name, CancellationToken cancellationToken = default(CancellationToken))
{
if (name == null)
throw new ArgumentNullException("name");
return DoDecompile(name);
}
public static async Task<ILSpyUnresolvedFile> DecompileTypeAsync(DecompiledTypeReference name, CancellationToken cancellationToken)
{
return await Task.Run(
delegate() { return DoDecompile(name, cancellationToken); },
cancellationToken);
var astBuilder = CreateAstBuilder(name, cancellationToken);
return new ILSpyFullParseInformation(ILSpyUnresolvedFile.Create(name, astBuilder), null, astBuilder.SyntaxTree);
}
static AstBuilder CreateAstBuilder(DecompiledTypeReference name, CancellationToken cancellationToken = default(CancellationToken))
@ -152,12 +146,6 @@ namespace ICSharpCode.ILSpyAddIn @@ -152,12 +146,6 @@ namespace ICSharpCode.ILSpyAddIn
{
return ILSpyUnresolvedFile.Create(name, CreateAstBuilder(name, cancellationToken));
}
public static ILSpyFullParseInformation ParseDecompiledType(DecompiledTypeReference name, CancellationToken cancellationToken = default(CancellationToken))
{
var astBuilder = CreateAstBuilder(name, cancellationToken);
return new ILSpyFullParseInformation(ILSpyUnresolvedFile.Create(name, astBuilder), null, astBuilder.SyntaxTree);
}
}
public class DecompiledTypeReference : IEquatable<DecompiledTypeReference>

2
src/AddIns/DisplayBindings/ILSpyAddIn/ILSpyParser.cs

@ -34,7 +34,7 @@ namespace ICSharpCode.ILSpyAddIn @@ -34,7 +34,7 @@ namespace ICSharpCode.ILSpyAddIn
public ParseInformation Parse(FileName fileName, ITextSource fileContent, bool fullParseInformationRequested, IProject parentProject, CancellationToken cancellationToken)
{
return ILSpyDecompilerService.ParseDecompiledType(DecompiledTypeReference.FromFileName(fileName), cancellationToken);
return ILSpyDecompilerService.DecompileType(DecompiledTypeReference.FromFileName(fileName), cancellationToken);
}
public ResolveResult Resolve(ParseInformation parseInfo, TextLocation location, ICompilation compilation, CancellationToken cancellationToken)

14
src/AddIns/DisplayBindings/ILSpyAddIn/ViewContent/DecompiledViewContent.cs

@ -48,11 +48,7 @@ namespace ICSharpCode.ILSpyAddIn @@ -48,11 +48,7 @@ namespace ICSharpCode.ILSpyAddIn
this.jumpToEntityIdStringWhenDecompilationFinished = entityTag;
this.TitleName = "[" + ReflectionHelper.SplitTypeParameterCountFromReflectionName(typeName.Type.Name) + "]";
DecompilationThread();
// Thread thread = new Thread(DecompilationThread);
// thread.Name = "Decompiler (" + shortTypeName + ")";
// thread.Start();
// thread.Join();
InitializeView();
SD.BookmarkManager.BookmarkRemoved += BookmarkManager_Removed;
SD.BookmarkManager.BookmarkAdded += BookmarkManager_Added;
@ -173,10 +169,12 @@ namespace ICSharpCode.ILSpyAddIn @@ -173,10 +169,12 @@ namespace ICSharpCode.ILSpyAddIn
#endregion
#region Decompilation
void DecompilationThread()
async void InitializeView()
{
try {
var file = ILSpyDecompilerService.DecompileType(DecompiledTypeName);
var parseInformation = await SD.ParserService.ParseAsync(DecompiledTypeName.ToFileName(), cancellationToken: cancellation.Token);
if (parseInformation == null || !(parseInformation.UnresolvedFile is ILSpyUnresolvedFile)) return;
var file = (ILSpyUnresolvedFile)parseInformation.UnresolvedFile;
memberLocations = file.MemberLocations;
DebugSymbols = file.DebugSymbols;
OnDecompilationFinished(file.Output);
@ -193,7 +191,7 @@ namespace ICSharpCode.ILSpyAddIn @@ -193,7 +191,7 @@ namespace ICSharpCode.ILSpyAddIn
writer.WriteLine(string.Format("Exception while decompiling {0} ({1})", DecompiledTypeName.Type, DecompiledTypeName.AssemblyFile));
writer.WriteLine();
writer.WriteLine(ex.ToString());
SD.MainThread.InvokeAsyncAndForget(() => OnDecompilationFinished(writer.ToString()));
OnDecompilationFinished(writer.ToString());
}
}

Loading…
Cancel
Save