Fixed synchronization in assembly resolver

Close #145
This commit is contained in:
Westin Miller
2017-10-10 03:58:21 -07:00
parent bc1a612a20
commit f285d67c87

View File

@@ -42,23 +42,16 @@ namespace Torch.Utils
{ {
string assemblyName = new AssemblyName(args.Name).Name; string assemblyName = new AssemblyName(args.Name).Name;
lock (_assemblies) lock (_assemblies)
{
if (_assemblies.TryGetValue(assemblyName, out Assembly asm)) if (_assemblies.TryGetValue(assemblyName, out Assembly asm))
return asm; return asm;
}
lock (AppDomain.CurrentDomain)
{
foreach (Assembly asm in AppDomain.CurrentDomain.GetAssemblies()) foreach (Assembly asm in AppDomain.CurrentDomain.GetAssemblies())
if (asm.GetName().Name.Equals(assemblyName)) if (asm.GetName().Name.Equals(assemblyName))
{ {
lock (this) lock (_assemblies)
{
_assemblies.Add(assemblyName, asm); _assemblies.Add(assemblyName, asm);
return asm; return asm;
} }
} lock (_assemblies)
}
lock (this)
{ {
foreach (string path in _paths) foreach (string path in _paths)
{ {