Fix threading issue introduced by #117 once for all
This commit is contained in:
@@ -16,10 +16,13 @@ namespace Barotrauma
|
|||||||
public static IEnumerable<Type> GetDerivedNonAbstract<T>()
|
public static IEnumerable<Type> GetDerivedNonAbstract<T>()
|
||||||
{
|
{
|
||||||
Assembly assembly = typeof(T).Assembly;
|
Assembly assembly = typeof(T).Assembly;
|
||||||
|
lock (cachedNonAbstractTypes)
|
||||||
|
{
|
||||||
if (!cachedNonAbstractTypes.ContainsKey(assembly))
|
if (!cachedNonAbstractTypes.ContainsKey(assembly))
|
||||||
{
|
{
|
||||||
AddNonAbstractAssemblyTypes(assembly);
|
AddNonAbstractAssemblyTypes(assembly);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#warning TODO: Add safety checks in case an assembly is unloaded without being removed from the cache.
|
#warning TODO: Add safety checks in case an assembly is unloaded without being removed from the cache.
|
||||||
return cachedNonAbstractTypes.Values.SelectMany(s => s.Where(t => t.IsSubclassOf(typeof(T))));
|
return cachedNonAbstractTypes.Values.SelectMany(s => s.Where(t => t.IsSubclassOf(typeof(T))));
|
||||||
|
|||||||
Reference in New Issue
Block a user