/// <summary> /// Erstellt eine neue Instanz der Klasse. /// </summary> /// <param name="Player">Der Player, dem die Klasse zugeordnet werden soll. Kann /// nicht <see langword="null"/> sein.</param> /// <exception cref="System.ArgumentNullException">Wird ausgelöst, wenn <paramref name="Player"/> /// <see langword="null"/> ist.</exception> public Sync(Player Player) : base() { if (Player == null) throw new ArgumentNullException("Player"); this._player = Player; this._sync = (global::Liconcomp.Sync)Activator.CreateInstance(typeof(global::Liconcomp.SyncClass)); }
/// <summary> /// Erstellt eine neue Instanz des Players. Beachten Sie immer nur eine /// Instanz dieser Klasse zur gleichen Zeit zu erstellen. Im DEBUG Modus /// wird eine <see cref="System.InvalidOperationException"/> ausgelöst, /// sollten Sie versuchen eine zweite Instanz zu erzeugen, bevor die erste /// freigegeben wurde. /// </summary> public Player() : base() { #if DEBUG if (Player.INSTANCE != null) throw new InvalidOperationException("You should not instantiate the Liconcomp Class more than once!"); Player.INSTANCE = this; #endif StartPlayer(); }
/// <summary> /// Konstruktor, der eine Referenz des Players und das Element übernimmt, /// welches gewrappt werden soll. /// </summary> /// <param name="Player">Eine Referenz auf den <seealso cref="Player"/>. /// Darf nicht <see langword="null"/> sein.</param> /// <param name="Element">Das COM Objekt, welches von dieser Instanz /// kontrolliert werden soll. Muss <see cref="global::Liconcomp.IElement"/> /// implementieren und darf nicht <see langword="null"/> sein.</param> internal Element(Player Player, global::Liconcomp.IElement Element) : base() { if (Player == null) throw new ArgumentNullException("Player"); if (Element == null) throw new ArgumentNullException("Element"); this._player = Player; this._object = Element; // Wenn das Objekt schon ein Movement hat, dann übernehmen wir es. if (this._object.Movement != null) this._position = new Movement((global::Liconcomp.IPosition)this.COMObject.Movement); HookEvents(); }
/// <summary> /// Interne Methode um alle Instanzvariablen freizugeben. Diese Methode sollte von /// erbenden Klassen überschrieben werden. /// </summary> /// <param name="Disposing"><see langword="true"/>, wenn der Aufruf vom Garbage /// Collector stammt, sonst <see langword="false"/>.</param> protected override void Dispose(bool Disposing) { // Wir müssen allen erbenden Klassen mitteilen, dass sie ihre Ereignis- // handler entfernen sollen. Ansonsten wird Liconcomp die Objekte niemals // freigeben. UnhookEvents(); this._object = null; this._player.RemoveElement(this); this._player = null; base.Dispose(Disposing); }
/// <summary> /// Interne Methode um alle Instanzvariablen freizugeben. Diese Methode sollte von /// erbenden Klassen überschrieben werden. /// </summary> /// <param name="Disposing"><see langword="true"/>, wenn der Aufruf vom Garbage /// Collector stammt, sonst <see langword="false"/>.</param> protected override void Dispose(bool Disposing) { base.Dispose(Disposing); while (this._elements.Count > 0) this._elements[0].Dispose(); StopPlayer(); this._elements.Clear(); this._elements = null; #if DEBUG Player.INSTANCE = null; #endif }
/// <summary> /// Interne Methode um alle Instanzvariablen freizugeben. Diese Methode sollte von /// erbenden Klassen überschrieben werden. /// </summary> /// <param name="Disposing"><see langword="true"/>, wenn der Aufruf vom Garbage /// Collector stammt, sonst <see langword="false"/>.</param> protected override void Dispose(bool Disposing) { base.Dispose(Disposing); this._sync = null; this._player = null; }
/// <summary> /// Standardkonstruktor. /// </summary> /// <param name="Player">Eine Referenz auf das <see cref="Player"/> Objekt.</param> /// <param name="VideoFile">Das COM Objekt, welches gewrappt werden soll.</param> internal VideoFile(Player Player, global::Liconcomp.IVideoFile VideoFile) : base(Player, VideoFile) { }
/// <summary> /// Privat. Es sollte die <see cref="Instance"/> Eigenschaft genutzt werden /// um eine Instanz dieser Klasse zu erzeugen. /// </summary> private Context() { this._player = new Player(); }
/// <summary> /// Gibt diese Instanz frei. Der Kontext kann danach nicht mehr benutzt werden. /// </summary> /// <param name="disposing">Gibt an, ob die Methode vom Garbage Collector aufgerufen /// wird oder nicht.</param> protected virtual void Dispose(bool disposing) { this.DestroySync(); this._playlists.Clear(); this._playlists = null; if (this._player != null) { this._player.Dispose(); this._player = null; } }