private void doRemoveLoader(string type) { { IResourceLoader dummy; AsyncLoaders.TryRemove(type, out dummy); } ConcurrentDictionary <string, ResourceHandle> handles; if (resourceHandles.TryGetValue(type, out handles)) { foreach (var handle in handles) { IEvent evt1 = new BasicEvent(); handle.Value.Unload(evt1); IEvent evt2 = new BasicEvent(); handle.Value.Unload(evt2); evt1.Wait(); evt2.Wait(); } resourceHandles.TryRemove(type, out handles); } }
public void AddLoader(IResourceLoader loader) { var asyncLoader = new AsyncLoader(loader, AsyncExecutor); AsyncLoaders.AddOrUpdate(loader.Type, asyncLoader, (a, b) => asyncLoader); if (resourceHandles.TryAdd(loader.Type, new ConcurrentDictionary <string, ResourceHandle>(16, 256))) { var dummy = AsyncLoaders[loader.Type].Default; Loaders.AddOrUpdate(loader.Type, loader, (a, b) => loader); } else { throw new NotSupportedException("Error: Loadertype '" + loader.Type + "' already registered."); } }