0 votes

WMPLib.dll n'exécute pas Dispose() correctement. Comment puis-je lire des mp3 sur Windows Mobile ?

J'utilise la dll Interop.WMPLib.dll pour lire des fichiers mp3 sur Windows Mobile 6.x, mais je n'arrive pas à faire en sorte que le GC se débarrasse proprement de lui-même. J'ai besoin de lire un court mp3 (20-30 secondes) toutes les 5 minutes pour une application qui dure longtemps (une heure ou plus), donc je ne peux pas me permettre de ne pas laisser le GC se débarrasser correctement de la librairie. Une solution a été discutée sur SO (http://stackoverflow.com/questions/2700219/why-is-this-simple-mobile-form-not-closed-when-using-the-player/2702086#2702086) par @ajhvdb mais ce n'est pas une solution suffisante pour moi, car le hack du timer n'est pas cohérent (j'avais besoin d'utiliser parfois des timings de 10 000 ou plus).

Quelqu'un peut-il me recommander une meilleure façon de gérer Dispose() ou simplement un autre moyen de faire jouer des fichiers mp3 avec Windows Mobile 6.x ?

Ce que j'ai actuellement (grâce à @ajhvdb) est :

public void Dispose()
    {
        try
        {
            Stop();
        }
        catch (Exception)
        {
        }
        // need this otherwise the process won't exit?!
        try
        {
            int ret = Marshal.FinalReleaseComObject(myPlayer);
        }
        catch (Exception)
        {
        }
        myPlayer = null;
        GC.Collect();

        //If you don't do this, it will not quit
        //http://www.eggheadcafe.com/software/aspnet/31363254/media-player-freezing-app.aspx
        for (int s = 0; s < 100; s++)
        {
            Application.DoEvents();
            Thread.Sleep(1);
        }
        GC.WaitForPendingFinalizers();

        //MessageBox.Show("Application Exiting");
    }

0voto

ctacke Points 53946

Utilisez-vous le matériel AxHost de l'article de MSDN ? Si oui, il y a un bug dedans qui fait que les objets ne sont pas proprement détruits.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X