Browse Source

Reformat code in LoadedAssembly.LoadAssembly

pull/1686/head
Siegfried Pammer 7 years ago
parent
commit
da1fb59c82
  1. 47
      ILSpy/LoadedAssembly.cs

47
ILSpy/LoadedAssembly.cs

@ -53,7 +53,7 @@ namespace ICSharpCode.ILSpy
{ {
this.assemblyList = assemblyList ?? throw new ArgumentNullException(nameof(assemblyList)); this.assemblyList = assemblyList ?? throw new ArgumentNullException(nameof(assemblyList));
this.fileName = fileName ?? throw new ArgumentNullException(nameof(fileName)); this.fileName = fileName ?? throw new ArgumentNullException(nameof(fileName));
this.assemblyTask = Task.Factory.StartNew(LoadAssembly, stream); // requires that this.fileName is set this.assemblyTask = Task.Factory.StartNew(LoadAssembly, stream); // requires that this.fileName is set
this.shortName = Path.GetFileNameWithoutExtension(fileName); this.shortName = Path.GetFileNameWithoutExtension(fileName);
} }
@ -145,20 +145,23 @@ namespace ICSharpCode.ILSpy
PEFile LoadAssembly(object state) PEFile LoadAssembly(object state)
{ {
var stream = state as Stream; MetadataReaderOptions options;
PEFile module; if (DecompilerSettingsPanel.CurrentDecompilerSettings.ApplyWindowsRuntimeProjections) {
options = MetadataReaderOptions.ApplyWindowsRuntimeProjections;
} else {
options = MetadataReaderOptions.None;
}
PEFile module;
// runs on background thread // runs on background thread
if (stream != null) if (state is Stream stream) {
{
// Read the module from a precrafted stream // Read the module from a precrafted stream
module = new PEFile(fileName, stream, metadataOptions: DecompilerSettingsPanel.CurrentDecompilerSettings.ApplyWindowsRuntimeProjections ? MetadataReaderOptions.ApplyWindowsRuntimeProjections : MetadataReaderOptions.None); module = new PEFile(fileName, stream, metadataOptions: options);
} } else {
else
{
// Read the module from disk (by default) // Read the module from disk (by default)
module = new PEFile(fileName, new FileStream(fileName, FileMode.Open, FileAccess.Read), PEStreamOptions.PrefetchEntireImage, stream = new FileStream(fileName, FileMode.Open, FileAccess.Read);
metadataOptions: DecompilerSettingsPanel.CurrentDecompilerSettings.ApplyWindowsRuntimeProjections ? MetadataReaderOptions.ApplyWindowsRuntimeProjections : MetadataReaderOptions.None); module = new PEFile(fileName, stream, PEStreamOptions.PrefetchEntireImage,
metadataOptions: options);
} }
if (DecompilerSettingsPanel.CurrentDecompilerSettings.UseDebugSymbols) { if (DecompilerSettingsPanel.CurrentDecompilerSettings.UseDebugSymbols) {
@ -175,7 +178,7 @@ namespace ICSharpCode.ILSpy
} }
return module; return module;
} }
void LoadSymbols(PEFile module) void LoadSymbols(PEFile module)
{ {
try { try {
@ -242,17 +245,17 @@ namespace ICSharpCode.ILSpy
[ThreadStatic] [ThreadStatic]
static int assemblyLoadDisableCount; static int assemblyLoadDisableCount;
public static IDisposable DisableAssemblyLoad() public static IDisposable DisableAssemblyLoad()
{ {
assemblyLoadDisableCount++; assemblyLoadDisableCount++;
return new DecrementAssemblyLoadDisableCount(); return new DecrementAssemblyLoadDisableCount();
} }
sealed class DecrementAssemblyLoadDisableCount : IDisposable sealed class DecrementAssemblyLoadDisableCount : IDisposable
{ {
bool disposed; bool disposed;
public void Dispose() public void Dispose()
{ {
if (!disposed) { if (!disposed) {
@ -263,16 +266,16 @@ namespace ICSharpCode.ILSpy
} }
} }
} }
sealed class MyAssemblyResolver : IAssemblyResolver sealed class MyAssemblyResolver : IAssemblyResolver
{ {
readonly LoadedAssembly parent; readonly LoadedAssembly parent;
public MyAssemblyResolver(LoadedAssembly parent) public MyAssemblyResolver(LoadedAssembly parent)
{ {
this.parent = parent; this.parent = parent;
} }
public PEFile Resolve(Decompiler.Metadata.IAssemblyReference reference) public PEFile Resolve(Decompiler.Metadata.IAssemblyReference reference)
{ {
return parent.LookupReferencedAssembly(reference)?.GetPEFileOrNull(); return parent.LookupReferencedAssembly(reference)?.GetPEFileOrNull();
@ -283,7 +286,7 @@ namespace ICSharpCode.ILSpy
return parent.LookupReferencedModule(mainModule, moduleName)?.GetPEFileOrNull(); return parent.LookupReferencedModule(mainModule, moduleName)?.GetPEFileOrNull();
} }
} }
public IAssemblyResolver GetAssemblyResolver() public IAssemblyResolver GetAssemblyResolver()
{ {
return new MyAssemblyResolver(this); return new MyAssemblyResolver(this);
@ -298,7 +301,7 @@ namespace ICSharpCode.ILSpy
return null; return null;
return debugInfoProvider; return debugInfoProvider;
} }
public LoadedAssembly LookupReferencedAssembly(Decompiler.Metadata.IAssemblyReference reference) public LoadedAssembly LookupReferencedAssembly(Decompiler.Metadata.IAssemblyReference reference)
{ {
if (reference == null) if (reference == null)
@ -371,7 +374,7 @@ namespace ICSharpCode.ILSpy
} }
loadingAssemblies.Add(file, asm); loadingAssemblies.Add(file, asm);
} }
App.Current.Dispatcher.BeginInvoke((Action)delegate() { App.Current.Dispatcher.BeginInvoke((Action)delegate () {
lock (assemblyList.assemblies) { lock (assemblyList.assemblies) {
assemblyList.assemblies.Add(asm); assemblyList.assemblies.Add(asm);
} }
@ -437,7 +440,7 @@ namespace ICSharpCode.ILSpy
{ {
return this.assemblyTask.ContinueWith(onAssemblyLoaded, default(CancellationToken), TaskContinuationOptions.RunContinuationsAsynchronously, taskScheduler); return this.assemblyTask.ContinueWith(onAssemblyLoaded, default(CancellationToken), TaskContinuationOptions.RunContinuationsAsynchronously, taskScheduler);
} }
/// <summary> /// <summary>
/// Wait until the assembly is loaded. /// Wait until the assembly is loaded.
/// Throws an AggregateException when loading the assembly fails. /// Throws an AggregateException when loading the assembly fails.

Loading…
Cancel
Save