Bonjour,
Je me suis mis récemment au C# et je m'attaque actuellement aux threads (je m'appuie sur cette documentation : HowTo.Thread.CSharp.I.pdf). Comme projet d'exemple, je souhaite créer une application dont l'interface se résume à une fenêtre avec 3 boutons :
- Lancer la musique
- Stopper la musique
- Jouer un son
Mon objectif est de pouvoir jouer un son, par dessus une musique de fond. J'arrive à jouer la musique, la stopper, mais lorsque je lance le son, ma musique se coupe. Inversement, lorsque je joue mon son et que pendant sa lecture je lance la musique, celle-ci coupe mon son pour être jouée.
La lecture de la musique et du son sont tous les deux faits de la même manière :
Est-il possible d'avoir plusieurs SoundPlayer qui jouent en simultané ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 s = new System.Media.SoundPlayer(); s.SoundLocation = "..."; s.Play();
Pensant que ce n'était pas le cas, j'ai essayé de me tourner vers Microsoft.DirectX.AudioVideoPlayback, mais impossible à utiliser depuis un thread : lorsque je clique sur Jouer un son, j'obtiens l'erreur suivante :
La DLL 'C:\WINDOWS\assembly\GAC\Microsoft.DirectX\1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.dll' tente une exécution managée dans le verrou du chargeur du système d'exploitation. N'essayez pas d'exécuter du code managé dans une fonction d'initialisation d'image ou DIIMain, car cela risque d'entraîner un blocage de l'application.
Dans ce cas, quelle serait la solution pour jouer un son depuis un thread ? Existe-t-il une meilleure solution que les threads pour jouer 2 sons simultanément ?
Merci...
Partager