/// <summary> /// Disposes a temporal <see cref="IaonSession"/> created using <see cref="CreateTemporalSession"/>. /// </summary> /// <param name="adapter"><see cref="IClientSubscription"/> source instance.</param> /// <param name="session"><see cref="IaonSession"/> instance to dispose.</param> public static void DisposeTemporalSession(this IClientSubscription adapter, ref IaonSession session) { if (session != null) { EventHandler<EventArgs<string, UpdateType>> statusMessageFunction; EventHandler<EventArgs<Exception>> processExceptionFunction; EventHandler processingCompletedFunction; // Remove and detatch from event handlers if (s_statusMessageHandlers.TryRemove(adapter, out statusMessageFunction)) session.StatusMessage -= statusMessageFunction; if (s_processExceptionHandlers.TryRemove(adapter, out processExceptionFunction)) session.ProcessException -= processExceptionFunction; if (s_processingCompletedHandlers.TryRemove(adapter, out processingCompletedFunction)) session.ProcessingComplete -= processingCompletedFunction; session.Dispose(); } session = null; }