Controllo Timer

mercoledì 02 novembre 2005 - 09.02

ysdemarc Profilo | Expert

Quando vado a fare delle letture con possibilità che i records siano piuttosto numerosi, mi è venuta la "brillante" idea di mostrare in un form un messaggio di attesa con un timer che segna il tempo del processo.

in pratica alla richiesta di lettura faccio così:
in una routine di classe istanzio il form di attesa dove all'interno ho il comando start di timer (che dovrebbe scatenare l'evento Tick ogni secondo) , setto i relativi messaggio, visualizzo il form, e vado alla lettura dei record.

Il problema è che se non ha finito la lettura il controllo timer non mi scatena nessun evento, nonostante la Start sia nel costruttore del form. Come faccio a far scorrere sti benedetti secondi?

Grazie.
Ciao!

AntCiar Profilo | Expert

Ciao. Prova ad inserire dopo la chiamata al metodo 'Timer.Start' la riga 'application.doevents'
Inserisci questa riga anche all'interno dell'evento "Tick' del timer, alla fine di tutte le istruzioni.

Ciao

ysdemarc Profilo | Expert

Gia fatto .. a parte subito dopo lo start..

ma non va comunque :-(((((



Vincenzo
Programmatore sbilenco :-D

AntCiar Profilo | Expert

Ciao.

Ti ho inserito in allegato un progetto di esempio su come gestisco io la cosa.

ysdemarc Profilo | Expert

Ciao.. grazie mille per l'esempio.
Anche se già fgacevo qualcosa del genere ho eseguito alla lettera le tue istruzioni ed il risultato è che mettendo un DoEvents all'interno del ciclo va tutto ok, non mettendolo l'evento Tick non viene generato neanche a pagarlo oro.
Ora facendo una lettura nel db è come se non mettessi il DoEvents nel ciclo quindi il tick non viene mai generato se non dopo la fine della lettura.

Guardando la guida del tool ldi dotnet, ho preso spunto da un esempio che non utilizza il controllo ma fa tutto con una classe, ebbene questa classe che metto in allegato fa una cosa stranissima.

A Console scrive i secondi perfettamente ma non riesce a farlo con il controllo associato se non alla fine.
Ciaoè una lettura che dura 6 secondi ho questo output a Console:

tempo: 0.00.01
>0.00.01
tempo: 0.00.02
tempo: 0.00.03
tempo: 0.00.04
tempo: 0.00.05
tempo: 0.00.06
>0.00.06
>0.00.06
>0.00.06
>0.00.06
>0.00.06

le righe sono generate dallo stesso evento. Quello con "tempo" sono l'output a Console del testo che vado a scrivere nel controllo, quelle segnate con ">" è l'output a Console del testo associato al controllo che in teoria dovrebbe essere uguale e alternarsi alle righe con "tempo" invece sembrta come se aspettasse la risposta del controllo e ne ha tante quante già generate dall'evento ma alla fine della lettura del db.
Con un ciclo.. senza lettura al db funziona normalmente.

Non riesco a capacitarmene!

Ciao!

Vincenzo
Programmatore sbilenco :-D
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