private void Run() { try { _VisualTarget = new VisualTarget(_HostVisual); _VisualTargetSource = new VisualTargetPresentationSource(_VisualTarget); lock (_Thread) { CreateMediaPlayer(); } _VisualTargetSource.RootVisual = _MediaElement; Dispatcher.Run(); } finally { if (_VisualTarget != null) { _VisualTarget.Dispose(); } lock (_Thread) { DestroyMediaPlayer(); } _CanPlay = false; } }
/// <summary> /// Releases all resources used by the <see cref="VisualSource"/>.</summary> /// <remarks> /// <b>Dispose</b> calls <see cref="CompositionTarget.Dispose"/> on the <see /// cref="VisualTarget"/> that manages visual composition.</remarks> public void Dispose() { if (!_isDisposed) { _isDisposed = true; _visualTarget.Dispose(); } }
/// <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) { return; } if (alsoManaged) { m_IsDisposed = true; HostConnector.Dispose(); } }
public void Dispose() { this.RunInTouchDispatcher(delegate() { VisualTarget visualTarget = this._visualTarget; if (visualTarget == null) { return; } visualTarget.Dispose(); }); this.Close(); }
protected virtual void Dispose(bool disposing) { if (!disposedValue) { if (disposing) { _visualTarget?.Dispose(); // TODO: dispose managed state (managed objects). } // TODO: free unmanaged resources (unmanaged objects) and override a finalizer below. // TODO: set large fields to null. disposedValue = true; } }