public IResourceToken Provide(string key, Func <object, object> factory) { lock (resourceTokenMutex) { if (!resourceTokens.ContainsKey(key)) { resourceTokens[key] = new List <ResourceToken>(); } List <ResourceToken> tokens = resourceTokens[key]; ResourceToken resourceToken = new ResourceToken(token => unsubscribeResource(tokens, token), factory); tokens.Add(resourceToken); return(resourceToken); } }
private void unsubscribeResource(List <ResourceToken> list, ResourceToken token) { lock (resourceTokenMutex) list.Remove(token); }