|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
[C#] Applicare un Timer su Foreach()
Salve,
come posso applicare un Timer su un ciclo tipo: foreach(DataRow dr in myDataTable.Rows) { //deve fare un Loop ogni Tick del Timer, fino a che non finiscono le Rows del DataTable } grazie mille !! |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3691
|
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(); } 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. |
![]() |
![]() |
![]() |
#3 |
Junior Member
Iscritto dal: Jan 2011
Messaggi: 8
|
Purtroppo continua a sfuggirmi il motivo della tua domanda... cosa devi fare di preciso?
Mi sfugge il perchè devi, per ogni ciclo, aspettare il timer per lavorare!
__________________
Ziggy |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
Devo inviare 10000 Newsletter, non voglio inviare 5 e-mail al secondo perceh rientro nello Spam, e quindi vorrei limitare a circa 1 e-mail al secondo o 1 ogni 2 secondi, tutto qua.
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Allora penso sia sufficiente mandare in sleep il thread corrente per 1 sec. circa (o comunque per l'intervallo di tempo scelto), dentro al ciclo, dopo aver inviato la mail.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:08.