Newsgroup: it.comp.programmare.win32
Titolo: Problema ritorno valore CreateThread e GetExitCodeThread

Ciao,
non so perchč, ma quando la funzione eseguita in un
thread a parte ritorna, restituendo un mio valore
DWORD (tipo 1 successo, 0 insuccesso), quando chiamo
la GetExitCodeThread(), il valore cambia in 0 sempre!
Ho provato allora a chiamare la TerminateThread() sperando
che in questo modo il parametro passato venisse preso
da GetExitCodeThread, ma nulla da fare!
I log prima di uscire dalla funzione, mi restituisce 1,
i log dopo la GetExitCodeThread mi restituisce 0!
Perchč????

 la GetExitCodeThread(), il valore cambia in 0 sempre!
E' incredibile!!!
Ho sostituito la var che conterrà il valore di ritorno
da DWORD ret a LPDWORD ret (ovviamente inizializzandola),
e con nessun stupore (chissà come mai?!?!) adesso il valore
di ritorno è 3277800!!!
che tristezza...su linux tutti questi problemi non li ho avuti!

 che tristezza...su linux tutti questi problemi non li ho avuti!
Probabilmente su linux è più facile leggere la documentazione e 
scrivere codice corretto.
-- 
Valter Minute
(the reply address of this message is invalid,
but you may be able to guess the right one)

 scrivere codice corretto.
Probabilmente perchè ciò che è scritto corrisponde a ciò che 
effettivamente fanno le funzioni!!!

 
Ho usato tutte le funzioni di cui parli e non ho mai avuto problemi.
Non voglio scendere nella solita diatriba windows-linux, ma credo 
che, prima di dire che le API non fanno quanto documentato, bisogna 
verificare un po' meglio e non andare a tentativi.


 verificare un po' meglio e non andare a tentativi.
Non volevo dire che le API non fanno quanto documentato, ma che la 
documentazione non è molto precisa su come funzionano le API.
In linux, tutto questo papiello inutile di funzione, si riassume in
una sola funzione che ha fatto il suo lavoro a prima botta!

 
Lanci un processo esterno?
Lo puoi fare anche con Windows.
Però lanciare un processo senza far nulla fino al suo completamento non 
è proprio la stessa cosa che lanciare un thread secondario nella stessa 
applicazione.
Sono sistemi diversi e, forse, prima di portare il codice così come 
viene, è meglio documentarsi sui differenti modelli e su come queste 
differenze andranno a impattare sulla tua applicazione.


 Lanci un processo esterno?
per niente proprio...creo un thread come in windows

 ha scritto nel messaggio 
news:dfn1cc$no7$1...@newsreader.mailgate.org...

secondo me, lanciare un thread e poi aspettare che termini non ha senso. 
Tanto vale eseguire il codice nello stesso thread.
Comunque.... non conosco il progetto e ognuno fa la propria scelta.
Non ho capito se il thread lo crei nel main o nella dll, e dovresti postare 
la parte di uscita dal thread.

 la parte di uscita dal thread
Tutto il codice che esegue i nuovi threads e che aspetta, avviene tutto
nella stessa funzione che si addormenta aspettando che gli altri thread
terminino l'esecuzione. Il codice d'uscita e semplicemente un return
(0) o (1) in base al valore restituito da un'altra funzione in
esecuzione. Il restante è quello scritto negli ultimi post.
Sinceramente non so più dove sbattere la testa...!

 ha scritto nel messaggio news:1126122974.8...@g44g2000cwa.googlegroups.com...
[cut]




-----------------
Prova ad usare un altro mezzo per segnalare il successo, es. un PostMessage(), anziché usare il valore di uscita.
Non è che il thread termina prima della funzione che determina il successo?
Magari, se lo esegui in debug e lo stoppi, il thread principale ha tempo di aspettare il risultato.