i have this little piece of C# code
//Creates a MediaPlayer with the sound you want to play
public static void PlaySound (Stream wavStream, string wavName, b
The MediaPlayer
requires a Dispatcher
in order to dispatch the MediaEnded
, MediaOpened
... events.
When you are using a WinForm application a Dispatcher
should already have been registered. That means that you should not have to do anything to get the events working.
If you want to receive events in a console application you'll have to run the Dispatcher
yourself.
public static void Main (string[] args)
{
var mediaPlayer = new MediaPlayer();
mediaPlayer.MediaEnded += (sender, eventArgs) => Console.WriteLine ($"ended.");
mediaPlayer.MediaOpened += (sender, eventArgs) => Console.WriteLine ($"started.");
mediaPlayer.MediaFailed += (sender, eventArgs) => Console.WriteLine ($"failed: {eventArgs.ErrorException.Message}");
mediaPlayer.Changed += (sender, eventArgs) => Console.WriteLine ("changed");
mediaPlayer.Open (new Uri (@"S:\custom.mp3"));
mediaPlayer.Play();
Dispatcher.Run();
}
I also had this problem. I couldn't find a solution, but I did come up with a workaround if your media exists in a looping application or thread. You can just manually reset the position after a certain point.
if (media.Position > new TimeSpan(0, 2, 25))
{
media.Position = new TimeSpan(0, 0, 00);
}
That's the best I can offer as of now.