Fragensteller
Unterschied beim aufrufen einer Methode ( ActivX oder durch Button)

Allgemeine Diskussion
-
Ich habe ein Programm geschrieben das die ActivX Komponente (COM Element) von VLC benutzt.
DIese ActivX Komponente spiel ein Video ab. Das Element hat ein Event das aufgerufen wird wenn das video das ende erreicht.
Nun will ich das sobald das Video das ende erreicht die form geschlossen wirdDas habe ich geschrieben. Das Event "EndReached" ruft eine Methode auf die dann die form schließt
this.Close();
... Doch das funktioniert nicht. Es kommt bis zu der zeile. Dann führt er die Zeile aus aber es passiert nichts.
Wenn ich die gleiche funktion mit einem Button aufrufe funktioniert aber alles einwandfrei.
was is der Unterschied zwischen dem aufruf der Funktion von dem COM element und dem aufruf durch einen Button.
Vielen Dank für die Hilfe im vorraus
Jeff
- Typ geändert Robert BreitenhoferModerator Dienstag, 18. September 2012 11:33 Keine Rückmeldung des Fragenstellender
Alle Antworten
-
Hallo,
an sich unterscheidet sich da nichts. Ein Event aus COM handlest du genauso wie in reines ManagedCode. An C# sollte es nicht liegen, sondern wenn dann am Player. Vielleicht musst du erstnoch dem Player sagen, das er sich auch beenden sol?! Kannst du mal den Aufruf von der Klasse posten?
PS: Wenn du .NET 3.0 oder höher benutzt, versuche mal ein WPF-Control zu hosten, denn in WPF gibt es das MediaElement, wenn du das benutzt, brauchst du keinen unmanaged Code zu verwenden.
Koopakiller - http://koopakiller.ko.ohost.de/
-
Ich benutze Visual Studio 10 - .Net 4.0 ( soweit ich weiß) Aber ich mag WPF nicht. Ich hab das ganze Programm ( das mitlerweile ziemlich riesig ist als Form anwendung geschrieben ) Das alles umzuschreiben will ich nicht.
also hier zum Code:
Das COM Element von VLC heiß "VLCPlayer"
VLCPlayer ruft das Event EndReached auf :private void VLCPlayer_MediaPlayerEndReached_1(object sender, EventArgs e) { System.Threading.Thread.Sleep(2000); VLC_Next(); }
Es wartet 2 Sek. Und führt dann VLC_Next(); Funktion auf. Diese Funktion entscheidet ob in der Playliste das nexte video abgespielt werden kann ODER : Das Ende der Playliste erreicht ist und dann wird der Teil der VLC_Next() Funktion aufgerufen :
if (CurrentTrack + 1 > VLCPlayer.playlist.items.count) { VLCPlayer.Dispose(); UpdateTimer.Enabled = false; this.Close(); }
Es funktioniert alles perfekt. bis es zum punkt : "this.Close();" erreicht. Es ruft die zeile auf führt sie aus .. aber nix mehr.
Ich habe Ein Event "OnFormClosing" .. das wird nicht mal aufgerufen.
Wenn ich aber die funktion VLC_Next(); mit nem Button aufrufe funktioniert alles perfekt. -
Hallo save_jeff,
Ich sehe es gibt etwas in dieser Richtung auf dem folgenden Diskussionsfaden aber es ist schwer zu sagen von was es kommt:
VLC not closing properly („Like many things it could be a driver issue, filters, codecs, and other things involved in the whole process of either the audio or the video“)
Grüße,
Robert
Robert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
-
Hallo save_jeff,
Bist Du auch durch den Weg mit Aximp.exe auf axvlc.dll (Teil vom Windows SDK ISO: http://www.microsoft.com/en-us/download/details.aspx?id=8442) + auf Windows Forms (OLE container) das Steuerelement (ToolboxItemAttribute Class) ziehen, gegangen?
****************************************************************************************************************
Dieser Thread wurde mangels weiterer Beteiligung des Fragestellenden ohne bestätigte Lösung abgeschlossen.
Neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.
****************************************************************************************************************
Grüße,
Robert
Robert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.