2016-02-03 3 views
0

J'essaie de créer une playlist, où la musique se joue les uns après les autres. J'ai besoin de Dispose()Audio, quand il se termine, parce que la fuite de mémoire se produira. J'ai écrit ce code:Problèmes audio en utilisant la bibliothèque AudioVideoPlayback

Audio a = new Audio(@"Music\Title.ogg"); 
a.Ending += new EventHandler((sender, e) => { (sender as Audio).Dispose(); }); 
a.Play(); 

Le problème est que je System.AccessViolationException dans Application.Run(new MainForm());: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. Cela se produit dans la fin du gestionnaire d'événements juste après la fin de la lecture de la musique. Alors, comment puis-je lire des fichiers musicaux les uns après les autres et disposer de l'audio précédent après la fin?

Répondre

0

Ne jetez pas Audio à l'intérieur de son propre événement car cette classe peut vouloir faire un peu de comptabilité après avoir appelé votre gestionnaire.

Je ne connais pas la logique de vos applications mais voici quelques idées, essayez d'appeler Open sur cet objet dans le gestionnaire d'événements. Il devrait être assez intelligent pour disposer des anciennes données et charger de nouvelles.

+0

Merci. J'ai essayé de faire 'new Audio' et il ne disposait pas de ressources. 'Open' fait ce que je veux. –