Newsgroup: it.comp.programmare.win32
Titolo: Thread che attende un evento

Ciao a tutti!
Ho un piccolo quesito da proporvi, sperando in una
risposta che mi delucidi...
Ho creato un programma che all'avvio crea due thread;
uno si mette in ascolto che succeda qualcosa, utilizzando
la WaitForSingleObject() e funziona egregiamente;
l'altro utilizza una libreria COM e alla sua partenza registra
un evento messo a disposizione dalla libreria stessa.
Per non terminare il thread (deve restare sempre in ascolto),
utilizzo il classico while come da esempio:
while (/* nessuna richiesta di terminazione*/)
    Sleep(1000); // si mette in riposo
Adesso:
Se durante il ciclo su menzionato, si verifica l'evento che
ho registrato, il controllo passa all'evento???
Grazie a chi mi risponde

 wrote in message
news:dn46er$fsq$1...@newsreader.mailgate.org...

Scusa, non si capisce bene che aspetti il primo thread... di quale evento
parli nella seconda parte....
Sko

 parli nella seconda parte....
Sto utilizzando l'SDK della Nokia e l'evento che si deve verificare è
quando arriva un sms sul cellulare...
il punto è che se metto solo in Sleep, come fa il thread a processare
l'evento?!? ci riesce??

 wrote in message
news:dn475o$gmv$1...@newsreader.mailgate.org...

L'evento che si deve verificare... cos'e' sto evento ? un Handle ?
Se e' un Handle, anche il secondo thread deve stare in
WaitForxxxxxObjectx()...se e' un Messaggio deve scaricare la sua coda ...
Un thread come puo' processare un evento se sta in un ciclo while(1)
Sleep(xxx) ?!?!
  Dov'e' che non ci capiamo ?
Sko

 WaitForxxxxxObjectx()...se e' un Messaggio deve scaricare la sua coda ...
E' questo che non capisco!
L'SDK permette la registrazione di questo evento e restituisce una
DWORD che dovrebbe identificare l'evento, perchè poi si può sconnettere
con una funzione sempre dell'SDK.
Non capisco se e come posso convertirlo per avere un HANDLE da 
utilizzare con le API!! questo perchè l'sdk non mette a disposizione
una funzione per attendere che si verifichi un evento!

 wrote in message
news:dn47qp$hiu$1...@newsreader.mailgate.org...

Se sta WORD che ti ritorna e' un handle fai il cast lo usi con la
WaitFor...()
...certo dovresti avere un minimo di documentazione...
certo cmq che di sicuro il thread in ciclo forever non combina un belino
Sko

 certo cmq che di sicuro il thread in ciclo forever non combina un belino
E si lo avevo immaginato, anche perchè la sleep addormenta il thread, 
quindi non può operare :-|

 Un thread come puo' processare un evento se sta in un ciclo while(1)
Forse puoi aiutarmi...ho visto le interfacce che sto utilizzando sono
quelle COM, quindi, se puoi vedi
IConnectionPoint::Advise()
questa č la funzione che connette un evento ad un oggetto...
la descrizione č piů chiara, ma comunque sull'MSDN non vi č
notizia su come attendere l'evento!
Non č che devo semplicemente restituire la gestione al sistema??
while (/*non terminato*/) {
    Sleep(1000); // giusto per non intasare la cpu
    RestituisciIlControlloAlSistema
}
Cosě funzionerebbe di sicuro senza appesantire il sistema...
Perň non so la funzione per restituire il controllo al sistema.

 Perň non so la funzione per restituire il controllo al sistema.
In questo caso con COM di mezzo e' un po' + complesso, leggiti le url sotto
ripostate.... e' solo + prolisso
http://msdn.microsoft.com/library/ita/default.asp?url=/library/ITA/cpref/html/frlrfSystemRuntimeInteropServicesUCOMIConnectionPointClassAdviseTopic.asp
http://msdn.microsoft.com/library/ita/default.asp?url=/library/ITA/vccore/html/vcconeventhandlingprinciples.asp
http://telemat.die.unifi.it/book/Networking_os/ActiveX/Controlli_ActiveX/controlli_teoria/teoria_205.html
Sko

 
ti ringrazio per i link, ma il problema non è COM in se!
L'oggetto COM sono riuscito a configurarlo bene; il problema
è come faccio, nel ciclo del thread, a metterlo in attesa in modo
simile a WaitForSingleObject() e soprattutto a dargli il tempo di
generare ed eseguire l'evento?!?