Captare la fine di un suono

lunedì 29 agosto 2011 - 10.54

pelling10 Profilo | Junior Member

Salve a tutti; utilizzando la classe SounPlayer riesco ad eseguire un suono da un applicazione:

SoundPlayer simpleSound = new SoundPlay(@"c:\Windows\Media\chimes.wav");
simpleSound.Play();

a questo punto vorrei che alla fine del suono si aprisse una form, come faccio a sapere quando il suono è terminato?
Grazie a tutti in anticipo!!!

u235 Profilo | Junior Member

Ciao, potresti mettere il codice dentro il costruttore del form che devi aprire e usare simpleSound.PlaySync() come prima istruzione, in questo modo dovrebbe ritardare l'apertura del form fino al termine del wav.

Ciao.

pelling10 Profilo | Junior Member

Gia fatto!!!! grazie!!! ma se volessi captare la fine del suono per scatenare un altro evento? esempio: alla fine del suono far apparire nella form un immagine oppure startare un altro suono.
grazie!!!

u235 Profilo | Junior Member

il modo più facile sarebbe quello di metterli in sequenza facendo eseguire il play sincronizzato e poi le altre cose, ma se volessi intervenire durante la "procedura" ad esempio in base a det. condizioni variabili tipo "ho finito questo wav, continuo con le altre?" allora dovresti crearti un evento. Cerco di spiegarmi meglio :

Non essendoci eventi di fine "play" in SoundPlayer (almeno che io sappia), devi mandare in esecuzione il blocco di codice che esegue il suono su un thread separato (in modo da non bloccare l'esecuzione del restante codice che determina altre condizioni tipo :"si, continua perchè non è stato premuto stop nell'interfaccia") e dentro questo blocco di codice verificare l'eventuale condizione per continuare.

un esempio potrebbe essere questo :

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

comunque in versione breve con delegato void (classico) :

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

oppure molto più semplicemente metti uno dietro l'altro (in modo procedurale) tutto quello che deve susseguirsi (sempre con playSync se si tratta di wav)

se qualcosa non ti è chiara chiedi pure...

ciao.

pelling10 Profilo | Junior Member

Grazie appena sono davanti al pc provo e ti faccio sapere!!!! ora sono al lavoro!!!!

u235 Profilo | Junior Member

ok, ciao.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5