/// <summary> /// Initializes a new instance of the <see cref="SeeingSharpMessenger"/> class. /// </summary> public SeeingSharpMessenger() { m_messengerName = string.Empty; m_syncContext = null; m_checkBehavior = SeeingSharpMessageThreadingBehavior.Ignore; m_messageSubscriptions = new Dictionary <Type, List <MessageSubscription> >(); m_messageSubscriptionsLock = new object(); }
/// <summary> /// Sets all required synchronization properties. /// </summary> /// <param name="checkBehavior">Defines the checking behavior for Publish calls.</param> /// <param name="messengerName">The name by which this messenger should be registered.</param> /// <param name="syncContext">The synchronization context to be used.</param> public void ApplyForGlobalSynchronization(SeeingSharpMessageThreadingBehavior checkBehavior, string messengerName, SynchronizationContext syncContext) { messengerName.EnsureNotNullOrEmpty(nameof(messengerName)); syncContext.EnsureNotNull(nameof(syncContext)); m_messengerName = messengerName; m_checkBehavior = checkBehavior; m_syncContext = syncContext; if (!string.IsNullOrEmpty(messengerName)) { s_messengersByName.TryAdd(messengerName, this); } }
/// <summary> /// Clears all synchronization options. /// </summary> public void DiscardGlobalSynchronization() { if (string.IsNullOrEmpty(m_messengerName)) { return; } SeeingSharpMessenger dummyResult = null; s_messengersByName.TryRemove(m_messengerName, out dummyResult); m_checkBehavior = SeeingSharpMessageThreadingBehavior.Ignore; m_messengerName = string.Empty; m_syncContext = null; }