private void OnItemRemove(int @interface, Protocol protocol, string name, string type, string domain, LookupResultFlags flags) { lock (this) { BrowseService service = new BrowseService(name, type, domain, @interface, protocol); if (services.ContainsKey(name)) { services[name].Dispose(); services.Remove(name); } OnServiceRemoved(service); service.Dispose(); } }
private void OnItemRemove(int @interface, Protocol protocol, string name, string type, string domain, LookupResultFlags flags) { lock (this) { BrowseService service = new BrowseService(name, type, domain, @interface, protocol); BrowseService to_dispose; // handler may be called recursively, so remove service from services before disposing if (services.TryGetValue(name, out to_dispose)) { services.Remove(name); to_dispose.Dispose(); } OnServiceRemoved(service); service.Dispose(); } }
private void OnItemRemove(int @interface, Protocol protocol, string name, string type, string domain, LookupResultFlags flags) { lock (this) { BrowseService service = new BrowseService (name, type, domain, @interface, protocol); if (services.ContainsKey (name)) { services[name].Dispose (); services.Remove (name); } OnServiceRemoved (service); service.Dispose (); } }