internal void Fire(Publication publication, object sender, EventArgs e) { WorkItem workItem = publication.WorkItem; if (workItem == null || (workItem != null && workItem.Status == WorkItemStatus.Terminated)) { publications.Remove(publication); publication.Dispose(); } else { Fire(sender, e, publication.WorkItem, publication.Scope); } }
/// <summary> /// Removes a publication from the topic. /// </summary> /// <param name="publisher">The object that contains the publication.</param> /// <param name="eventName">The name of event on the publisher that fires the topic.</param> public virtual void RemovePublication(object publisher, string eventName) { Guard.ArgumentNotNull(publisher, "publisher"); Guard.ArgumentNotNull(eventName, "eventName"); Clean(); Publication publication = FindPublication(publisher, eventName); if (publication != null) { publications.Remove(publication); publication.Dispose(); if (traceSource != null) { traceSource.TraceInformation(Properties.Resources.EventTopicTracePublicationRemoved, name, eventName, publisher.GetType().ToString()); } } }