/// <summary> /// Releases unmanaged and - optionally - managed resources. /// </summary> /// <param name="alsoManaged"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param> private void Dispose(bool alsoManaged) { if (!m_IsDisposed) { if (alsoManaged) { MediaCore.Dispose(); } m_IsDisposed = true; } }
/// <summary> /// Handles the asynchronous dispose of the underlying Media Engine. /// </summary> private void HandledAsynchronousDispose() { // Dispose outside of the current thread to avoid deadlocks ThreadPool.QueueUserWorkItem(s => { MediaCore.Dispose(); // Notify the one last state GuiContext.Current.EnqueueInvoke(() => { UpdateNotificationProperties(); UpdateDependencyProperties(); }); }); }