Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Ciclo infinito utilizzando i Ticks
lunedì 12 aprile 2010 - 17.31
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
boc_babi
Profilo
| Junior Member
52
messaggi | Data Invio:
lun 12 apr 2010 - 17:31
Ciao a tutti,
ho realizzato una Sub personalizzata che gestisce un evento.
La Sub, una volta fatti opportuni confronti tramite l'istruzione Now.Ticks, genera un evento.
Praticamente quando entro nella Sub controllo a quanti Tiks sono e fintanto che non è trascorso un certo tempo (è l'argomento che passo alla Sub) non esco dalla Sub. E' un tentativo di creare un temporizzatore abbastanza fine.
Il problema nasce quando, una volta intercettato l'evento e aver fatto quello che dovevo fare, ad esempio aggiornare una scitta, rilancio la Sub.
Mi esce l'errore <<Eccezione non gestita di tipo 'System.StackOverflowException' in System.Windows.Forms.dll>>
Se il tempo che passo come argomento alla Sub è di 1 secondo, non ci sono problemi, l'errore appare quando vado intorno agli 0,5 secondi.
Sapete darmi delle spiegazioni in merito ?
Grazie mille.
Cimperiali
Profilo
| Newbie
43
messaggi | Data Invio:
mer 14 apr 2010 - 17:07
non ti piaceva Timer?
boc_babi
Profilo
| Junior Member
52
messaggi | Data Invio:
lun 19 apr 2010 - 23:21
peccato che il timer abbia una risoluzione vergognosa
Cimperiali
Profilo
| Newbie
43
messaggi | Data Invio:
mar 20 apr 2010 - 01:19
tu credi? anche i ticks che ti leggi da gettickcounter non sono affidabili: la risoluzione è intorno ai 20 msec comunque. Tant'è che sotto gli 05 cominci ad avere problemi (ma nel tuo caso mi sa che si tratta di "rientranza").
boc_babi
Profilo
| Junior Member
52
messaggi | Data Invio:
mar 20 apr 2010 - 14:12
Ok, ho notato che anche i ticks non sono precisissimi, li ritengo comunque meglio del timer del windows form che si aggira sui 55ms di risoluzione e comunque molto lontani dalla risoluzione di 5 ms che vorrei ottenere (ma possibile che non sia possibile avere un timer che mi spacchi il ms su un PC che ha un processore da migliaia e migliaia di Hz ?)
Cosa intendi per "rientranza" ?
Cimperiali
Profilo
| Newbie
43
messaggi | Data Invio:
mar 20 apr 2010 - 23:53
"problema di rientranza" significa che non hai gestito bene "la rientranza" cioè il fatto che, mentre viene eseguita una porzione di codice, prima che tale esecuzione sia finita, viene chiamato quello stesso codice. Di norma questo problema è tipico del multithread e dell'uso di timer non thread safe. Il timer che non ti piace è thread safe (ma perchè è a thread singolo). System.Timer lavora in un thread separato, ma se lo sai usare è thread safe.
Sistem.threading.timer è esplicitamente NON thread safe, che significa che devi gestire tu la faccenda, se lo vuoi usare.
per saperne di più sui vari tipi di timer e su come usarli senza far scoppiare tutto:
[url]
http://msdn.microsoft.com/en-us/magazine/cc164015.aspx
[/url]
Per saperne di più sulla rientranza:
[url]
http://it.wikipedia.org/wiki/Codice_rientrante
[/url]
[url]
http://rejex.wordpress.com/2009/12/15/funzioni-rientranti/
[/url] e qui, se ti leggi i commenti, capisci che sei in un terreno minato...
boc_babi
Profilo
| Junior Member
52
messaggi | Data Invio:
mer 21 apr 2010 - 07:39
Grazie mille per le info, ciao
Torna su
Stanze Forum
Elenco Threads
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 !