Ciao a tutti,
ho uno strano problema con la condivisione di un evento tra diversi threads.
Illustro subito un esempio:

codice:
void main(){
  HANDLE killServiceEvent = CreateEvent (0, TRUE, FALSE, _T("NOME_EVENTO"));
  if (!killServiceEvent) return;

  CreateThread(0, 0, (LPTHREAD_START_ROUTINE) ServiceThread, 0, 0, NULL);
  WaitForSingleObject (killServiceEvent,INFINITE)
  ...
}

void ServiceThread(){
  HANDLE killServiceEvent = OpenEvent (EVENT_MODIFY_STATE, FALSE, _T("NOME_EVENTO"));
  if (!killServiceEvent) return;
    WaitForSingleObject (killServiceEvent,INFINITE); // Non si ferma qui.. perchè?
    .....
}
L'esempio è molto semplice: ho un main che crea un evento e si mette in attesa della terminazione del thread e dell'evento (e funziona perfettamente), poi ho un servizio che accede all'evento creato dal main e attende che diventi segnalato (compito che svolge un altro thread su richiesta utente). Il problema è che nel ServiceThread, la funzione WaitForSingleObject non attende quindi non si aspetta che l'evento diventi segnalato.

E' strano perchè l'evento è corretto (se provo a cambiare nome su OpenEvent, killServiceEvent diventa null) e anche se scrivo sul thread:

ResetEvent(killServiceEvent);
WaitForSingleObject (killServiceEvent,INFINITE);

il WaitForSingleObject procede senza problemi.

Ho provato a mettere WaitForSingleObject (killServiceEvent,INFINITE) sul main, subito dopo la creazione.. e lì si blocca tranquillamente quindi funziona.

Spero mi aiutiate.. grazie in anticipo