Utile per tutti: Client Asterisk in .NET 2005 - Domanda: come fare una...

martedì 08 aprile 2008 - 16.48

Lanello Profilo | Senior Member

Ciao a tutti,

ho sviluppato un'interfaccia in VB.NET 2005 con un centralino asterisk basandomi sula libreria C# che ho trovato su sourceforge.net

http://asterisk-dotnet.sourceforge.net/

tutto funziona egregiamente, il mio "semplicissimo" software sta in ascolto del centralino sul protocollo AGI

l'unico evento che vado ad intercettare è l'evento DIAL (l'arrivo o l'effettuazione di una chiamata su o da un interno) ed in quel momento visualizzo una piccola finestra di informazioni (in stile outlook 200X quando avvisa di un messaggio arrivato) , per visualizzare N finestre in caso di N chiamate utilizzo dei thread separati.

Per migliorare le "prestazioni" della finestra di avviso ho deciso di gestire completamente tutto dalla chiamata al thread (scrittura dei dati nelle labels, posizione sullo schermo, apertura e chiusura).

Tutto funziona a dovere, ma non riesco a "freezare" la finestra di avviso per un tot di secondi come voglio io...

ho spulciato internet per ore ed ho sempre trovato che il comando da usare è:
Threading.Thread.Sleep(4000)

ebbene... qual'è il mio problema???

E' che anche avendo impostato il thread.sleep a 4000ms (4 secondi) la suddetta finestra rimane aperta per circa mezzo secondo e poi se ne va tranquillamente, fregandosene totalmente del thread.sleep!!!

Vi posto (in caso di utilità) il codice del mio progetto che è veramente semplicissimo in modo che capiate bene anche quello che ho fatto... per vedere se riuscite ad aiutarmi


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

Grazie a tutti per il supporto anticipatamente.

Ciao (Spero che questo piccolo tool sia utile ad altri, visto che non ho trovato molta documentazione in giro su questo tipo di interazione)

Tango Profilo | Newbie

Ciao!
Ti chiedo scusa per il disturbo, ho visto il tuo articolo e mi sto sbattendo per fare anch'io un programma .NET che si interfaccia ad Asterisk.
Il mio problema è che devo fare un programma che ad una tale ora (che vedrò come recuperare) deve chiamare un interno e lanciare un audio.
In pratica devo realizzare per un cliente che ha un albergo un sistema di "sveglia mattutina", e quindi far squillare un telefono di una camera e quando qualcuno risponde far sentire una voce (precedentemente registrata) che gli dice "Sveglia!".
Onestamente non so come fare ad aprire un canale, selezionare un interno e lanciare appunto un file audio.

La disperazione sta prendendo il sopravvento, mi sapresti dare qualche dritta su come fare tale operazione?

Grazie e scusa ancora per il disturbo

Simone

fabcal24 Profilo | Newbie

Spero che tu abbia già risolto ma il problema è solo uno: il processo parte ma non c'è nulla che ne garantisca la prosecuzione dell'esecuzione. Ho provato il tuo codice aggiungendo alla fine della tua routine, prima di x.close un do loop until. Se i 4 secondi li fai contare dentro il do loop l'esecuzione del processo continua finchè non esce dal do loop mentre se usi il threading.thread sleep sospendi il processo ma in realtà l'esecuzione di quella riga viene ignorata. Puoi usare anche il while wend. Dentro il do loop o il while wend occorre inserire un application.doevents. Il resto del tuo codice è molto buono, complimenti

Ciao

P.S. Il mio profilo indica newbie ma in realtà non è così. (Eheheh)
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5