Torna al Thread
public partial class Form2 : Form
{
public delegate void EndWavEventHandler(object sender, string Wav);
EndWavEventHandler endWavEventHandler = null;
public event EndWavEventHandler EndWav
{
add { this.endWavEventHandler += value; }
remove { this.endWavEventHandler -= value; }
}
public Form2()
{
InitializeComponent();
//aggiungo un handler di fine wav alla classe stessa (avrei potuto aggiungerlo in altra classe)
this.EndWav += new EndWavEventHandler(Form2_EndWav);
}
//viene chiamato quando termina il wav
void Form2_EndWav(object sender, string Wav)
{
//se è necessario l'invoke (necessario per modifiche di controlli chiamate da thred differente)
if (this.InvokeRequired)
//richiamo questo metodo con un delegato
this.Invoke(new EndWavEventHandler(Form2_EndWav), sender, Wav);
// non è necessario l'invoke (chiamato da delegato)
else
this.label1.Text = "ok";
}
private void button1_Click(object sender, EventArgs e)
{
//creo un nuovo thread
Thread t = new Thread(PlayWavAsyncForEndWav);
//avvio il thread con il codice per il play del wav
t.Start();
}
void PlayWavAsyncForEndWav()
{
string path = @"C:\Windows\Media\chimes.wav";
SoundPlayer simpleSound = new SoundPlayer(path);
simpleSound.PlaySync();
if (this.endWavEventHandler != null)
this.endWavEventHandler(this, path);
}
}