Uno de los motivos por lo que he estado tanto tiempo sin actualizar el blog es porque he estado metido en una puesta de producción dondo todo lo que ha podido ir mal, ha ido mal (siempre se cumplen la leyes de Murphy). Una de las cosas que se cambiaron a última hora, fueron unas notificaciones sonoras en muchas partes del programa. Yo tenía un código relativamente antiguo para reproducir un sonido.
[sourcecode language="csharp"]public int SND_ASYNC = 0×0001; // play asynchronously
public int SND_FILENAME = 0×00020000; // use file name
public int SND_PURGE = 0×0040; // purge non-static events
[System.Runtime.InteropServices.DllImport("WinMM.dll")]
public static extern bool PlaySound(string fname, int Mod, int flag);
private void button1_Click(object sender, EventArgs e)
{
PlaySound(”tada.wav”, 0, SND_FILENAME | SND_ASYNC);
}[/sourcecode]
Este código funciona perfectamente, pero nunca me ha gustado usar este tipo de codigo usando liberirías externas. Mirando en la MSDN encontré otra solución que me parece muchísimo mejor. Resulta que desde .NET 2.0 tenemos la clase SoundPlayer en el espacio de nombre System.Media que nos ayuda perfectamente a reproducir un sonido. El código para ésto es así de fácil
[sourcecode language="csharp"]private void button2_Click(object sender, EventArgs e)
{
System.Media.SoundPlayer soundPlayer = new System.Media.SoundPlayer();
soundPlayer.SoundLocation = “tada.wav”;
soundPlayer.Play();
}[/sourcecode]
Tenemos más información sobre esta clase en http://msdn.microsoft.com/en-us/library/system.media.soundplayer(VS.80).aspx
