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); } }
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5