comment puis-je faire une boucle infinie avec 5 secondes de pauses
string connectionstring = "server =SQLVS2\\SQLVS2;database=DDM;Persist Security Info=True;uid=ddmuser;password=User02+Ddm;";
SqlConnection myConnection = new SqlConnection(connectionstring);
SqlCommand myCommand = new SqlCommand("GetNullHash", myConnection);
myCommand.CommandType = CommandType.StoredProcedure;
myConnection.Open();
SqlDataReader rdr = myCommand.ExecuteReader();
while (rdr.Read())
{
string filename = @"\\" + rdr.GetString(3);
filename = System.IO.Path.Combine(filename, rdr.GetString(2));
filename = System.IO.Path.Combine(filename, rdr.GetString(1));
computeHashh1 abc = new computeHashh1();
Console.WriteLine(abc.computeHash(filename));
inserthash insert = new inserthash();
insert.InsertHash(rdr.GetString(1), abc.computeHash(filename), rdr.GetStr(2),rdr.GetString(3));
}
comment puis-je faire cette boucle exécuter une fois dans les 5 secondes pour toujours ou jusqu'à l'arrêt.
Vous devez vous connecter pour publier un commentaire.
La méthode la plus simple serait:
Cependant, pour plus de robustesse, je vous recommande un service windows avec un bon minuterie.
proper timer
.Je enveloppez votre code et utiliser un objet timer qui va vous permettre d'avoir le contrôle sur le compteur lui-même (arrêt,démarrage,etc)
plus d'info à
http://msdn.microsoft.com/en-us/library/system.timers.timer%28v=vs.100%29.aspx
Essayer:
C'est le plus simple.
Bien, si j'allais le faire, et les contraintes sur l'intervalle ne sont pas précis, et je voulais être absoultely assurez-vous que plusieurs événements de la minuterie ne sera jamais la cause de mon code pour être rentré si mon code emmenaient parfois plus longue que l'intervalle, je voudrais juste utiliser un sleep() de la boucle et avoir la chose à travailler sans superflu et de timers simplement ajouter de la complexité à ce qui semble être une simple exigence.
À l'extérieur d'un thread GUI qui doit traiter les messages, (ou d'un service principal thread qui doit traiter start/stop, etc), les timers sont souvent inadaptés, mal à l'aise ou, si un autre thread/piscine doit recueillir l'événement timer, le gaspillage de contexte-interrupteurs.
Il n'y a pas de problème, sur Vista/W7 de toute façon, avec l'arrêt d'un service qui a donné naissance au fils de couchage. Il faut environ 20 secondes pour que l'OS se rendre compte que, même si le service thread principal a traité le message d'arrêt, le processus de service a encore des threads bloqués - il arrête le processus de service de toute façon, tuant tout de couchage/course à pied/en attente/whatever threads.