View Single Post
Old 01-03-2011, 19:21   #2
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Cittā: Londra (Torino)
Messaggi: 3692
Ciao.

Se l'operazione da eseguire ogni ciclo ci impiega meno della frequenza del timer, propongo una cosa simile.

Codice:
static void Main(string[] args)
{            
    var simpleSemaphore=new ManualResetEvent(false);
    var tickingTimer = new Timer(200);
    tickingTimer.Elapsed += (s, e) => simpleSemaphore.Set();
    tickingTimer.Start();
    foreach(char ch in "StringaDiEsempio")
    {
        Console.Write(ch);
        simpleSemaphore.WaitOne();
        simpleSemaphore.Reset();
    }
    Console.ReadKey();
}
Sconsiglio di eseguire il loop su un risultato di database remoto.
Meglio invece ottenere tutto il risultato in locale, e poi effettuare il loop sulla copia locale.
Questo per liberare il database il piu' velocemente possibile, ed evitare lock magari non voluti (e rallentare se non fare fallire altri processi)
Da ignorarsi se l'implementazione si basa su database sconnessi.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.

Ultima modifica di gugoXX : 01-03-2011 alle 19:26.
gugoXX č offline   Rispondi citando il messaggio o parte di esso