Newsgroup: it.comp.lang.delphi
Titolo: Thread

Ciao.
Ho scritto un programma che monitorizza il tempo di connessione e
testandolo ho notato che quando avvio appllicazioni come il browser,
il cronometro si ferma e "perde" dei secondi.
Quindi ho pensato che il problema si potrebbe risolvere con i thread,
ma quello che non ho ben chiaro e come fare per evitare le interferenze
dovute all'avvio degli altri programmi.
Grazie.
---
Ryo 

Ma perchè non utiizzi GetTickCount che ritorna il numero di millisecondi 
trascorsi dallo start-up del sistema operativo?

 il cronometro si ferma e "perde" dei secondi.
Dovresti specificare come stai monitorizzando il tempo di connessione e, 
in base al metodo che hai scelto, vedere perchè altri programmi 
interferiscono con esso.
Ciao! :-)
-- 
Marco «Alka» Breveglieri
  (marco [@] abls [.] it)
  ABLS Team S.n.c. - Software & Web
  42019 Scandiano (Reggio Emilia)
 
http://www.abls.it

Rispondo qui a tutti.
Dunque non utilizzo GetTickCount come suggerito da microges
perche' non e' una connessione flat "always on".
Per il monitoraraggio faccio in questo cosi':
il componente mgInetDetect intercetta lo stato della connessione,
e nel momento in cui diventa online si attiva un timer che
cronometra la durata e calcola la spesa parziale.
Nel componente ho impostato che il controllo venga effettuato
ogni 500 millisecondi quindi, mi aspetto uno scarto di circa un
secondo dal tempo misurato dal SO, ma invece risulta di circa
3-4 secondi, inoltre ho scoperto che non e' dovuto all'interferenza
di altri programmi: avevo attivo solo il mio programma ed il firewall;
non penso che la causa sia il firewall, perche' ho concesso
l'autorizzazione prima di avviare la connessione.
Grazie per l'aiuto.
---
 Ryo 

 perche' non e' una connessione flat "always on". [...]
Non c'entra nulla *GetTickCount* con il tipo di connessione...si tratta 
di una funzione che è in grado di restituirti i millisecondi trascorsi 
dall'avvio del sistema operativo; utilizzando questa funzione, puoi 
comodamente fare calcoli e determinare con precisione la durata di un 
periodo. Ad esempio, puoi memorizzare il valore restituito dalla 
suddetta funzione nel momento della connessione e, successivamente, 
sottrarlo dal valore ottenuto quando la connessione viene chiusa.


 perche' non e' una connessione flat "always on".
Non ha importanza che sia always on o meno.
Memorizzi il valore di GetTickCount quando la connessione va su, prendi 
il nuovo valore quando va giu' e calcoli il tempo utilizzato.
In questo modo prima di tutto risparmi un timer ed in secondo luogo 
eviti che il programma perda il tempo quando lo scheduling del s.o. non 
gli gira abbastanza cicli.
Se poi perde i colpi con GetTickCount allora sta succedendo qualcosa di 
molto piu' grave di qualsiasi cosa possa accadere al tuo programma ;-)

> Non c'entra nulla *GetTickCount* con il tipo di connessione...
<CUT>
Si almeno questo lo sapevo :-)
infatti il codice che utilizzo e' il seguente:
procedure TfmReport.TimerConnectionTimer(Sender: TObject);
begin
  if IntrNetDetect.Online then
   begin
     ConnTime := Now - StartTime;
     lblConnTime.Caption := TimeToStr(ConnTime);
   end
  else
   begin
    EndTime := Now;
    TimerConnection.Enabled := false;
    // Imposta label e led in base allo stato della connessione
    SetConnectionStatus;
    SetLog;
   end
end;
e come ho detto prima il timer si attiva quando
IntrNetDetect.Online e' true.
Ciao.
---
Ryo 

 abbastanza cicli.
[...]
Faro' cosi', ma mi piaceva vedere lo scorrere del tempo. :-)
Ciao e grazie.
---
Ryo 

 Faro' cosi', ma mi piaceva vedere lo scorrere del tempo. :-)
Perché rinunciare? :D)
Dai un'occhiata qui :D
http://cc.borland.com/codecentral/ccweb.exe/listing?id=22921
L'ho scritto non molto tempo fà, penso che ti potrebbe interessare.
Ciao,
Andrea

 Faro' cosi', ma mi piaceva vedere lo scorrere del tempo. :-)
Non è detto che tu debba rinunciare a "vedere lo scorrere del tempo", se 
con questo ti riferisci al riportare a video, in qualche modo, i minuti 
di connessione.
Puoi tranquillamente istruire il tuo thread affinchè aggiorni 
periodicamente il tempo visualizzato; l'unica cosa che non devi fare è 
affidare al thread il conteggio del tempo che passa, che ottieni da 
calcoli progressivi attraverso la *GetTickCount*, limitandolo alla sola 
visualizzazione periodica del tempo parziale di connessione.


Ciao.
Grazie per il link, ma non sono riuscito a scaricarlo. :-(
Non ho capito se devo fare un'iscrizione apposita per
quell'area, perche' quando ho provato a loggarmi mi ha
dato un errore e precisamente:
"HTTP 500 - Errore interno del server"
Che posso fare?
Grazie.
---
Ryo 

 Grazie.
Prego,
Andrea

 Nel secondo, manda una mail a Robert Love o John Kaster.
Di solito uso Opera, Internet Explorer lo uso solo per le pagine
che non si visualizzano correttamente con Opera.
Ho provato a scrivere a John Kaster, ora aspetto notizie.
Ciao.
---
Ryo